Tutoriel Sécurité Java : HTTPS sous Tomcat

////Tutoriel Sécurité Java : HTTPS sous Tomcat


Maîtrisez la mise en oeuvre de HTTPS sous Tomcat 6/7 . Générez la paire de clés et le certificat du serveur. Activez le connecteur HTTPS. Cntactez une autorité de certification. Intégrez Apache HTTPD et Tomcat par HTTPS via mod_ssl

Objectifs

 Comprendre le protocole HTTPS

 Comprendre la mise en oeuvre https sous tomcat

Programme

 Partie 1 : génération des certificats et clés de cryptage

 Partie 2 : configuration du connecteur https

 Partie 3 : test connecteur https

 Partie 4 : Autorité de certification

 Partie 5 : utiliser Apache comme frontal https

 Conclusion

Liens utiles

 Tomcat Realm-

 Tomcat SSL (documentation officielle

 Tutoriaux sécurité Oracle

 Commandes Keytool

Durée

 20 min

Qui sommes-nous ?

presentation-objis-conseil-formation-java-soa2.png

Contexte

Besoins : confidentialité + non répudiation

Pour crypter les échanges entre clients et serveur, HTTPS utilise une clé publique et une clé privée.

Tout ce qui est crypté avec la clé privée n’est décryptable qu’avec la clé publique, et inversement.

La clé publique est diffusée au client. La clé privée reste sur le serveur ( à protéger par l’administrateur , bien qu’elle soit déja protégée par un mot de passe).

Pour garantir l’authenticité du serveur, les techniques de cryptage introduisent la notion de certificat. Le certificat du serveur permet au client de vérifier l’identité du serveur, et d’obtenir, s’il accepte le certificat, la clé publique du serveur.

Partie 1 : génération des certificats et clés de cryptage

tutoriel-securite-java-j2ee-jee-ssl-tomcat-1

 

tutoriel-securite-java-j2ee-jee-ssl-tomcat-2

 

tutoriel-securite-java-j2ee-jee-ssl-tomcat-3

 

tutoriel-securite-java-j2ee-jee-ssl-tomcat-4

INFOS : pour la commande de génération des clés ( genkey ), les options par defaut sont :

— alias : mykey,

— validity : 6 mois

— keystore : répertoire personnel de l’utilisateur qui génère ce fichier.

Les valeurs obligatoires sont :

— dname (Distinguished Name)

— storepass

— keypass.

Partie 2 : configuration du connecteur https

Tomcat propose , dans sa configuration par défaut, un connecteur HTTPS préconfiguré. Cette configuration est mise en commentaire.

tutoriel-securite-java-j2ee-jee-ssl-tomcat-6

 Décommentez la configuration du connecteur HTTPS

tutoriel-securite-java-j2ee-jee-ssl-tomcat-7

L’élément Connector du connecteur HTTPS possède les même attributs que les autres connecteurs de Tomcat (comme le connecteur HTTP du port 8080), mais il en a également qui lui sont propres :

— keystoreFile : permet d’identifier le chemin du fichier de stockage des clés si un autre que celui utilisé par défaut est utilisé. Le chemin peut être absolu ou relatif à CATALINA_HOME. Le fichier par défaut se nomme .keystore et se trouve dans le répertoire personnel de l’utilisateur qui génère ce fichier.

— keystorePass : mot de passe du fichier de stockage des clés. La valeur par défaut est changée

— sslProtocol : le protocole de cryptage utilisé par HTTPS. Recommandations : mette TLS si vous avez une machine virtuelle SUN/Oracle , et mettre ‘SSL’ si vous avez une machine virtuelle IBM

— clientAuth : permet d’indiquer si les clients qui veulent utiliser ce connecteur doivent ou non disposer d’un certificat client. La valeur par défaut est false.

— truststoreFile : le fichier utilisé pour valider les certificats clients

— truststorePass : le mot de passe de ce fichier

Ci-dessous un exemple de configuration d’un ‘truststore’ :

tutoriel-securite-java-j2ee-jee-ssl-tomcat-8bis

Avec ici l’ajout dans le truststore (créé à cette occasion !) d’un premier certificat associé à un des utilisateurs autorisés.

import-certificat-dans-truststore

Partie 3 : test connecteur https

 Démarrer le serveur Tomcat

 Accédez à l’url suivante : https://localhost:8443 . Expliquez

tutoriel-securite-java-j2ee-jee-ssl-tomcat-7

 

tutoriel-securite-java-j2ee-jee-ssl-tomcat-9

 

tutoriel-securite-java-j2ee-jee-ssl-tomcat-10

 

tutoriel-securite-java-j2ee-jee-ssl-tomcat-11

 

tutoriel-securite-java-j2ee-jee-ssl-tomcat-12

Partie 4 : autorité de certification

Nous allons générer une demande de certificat (Certificate Signing Request : CSR) afin de la soumettre à une Autorité de certification (Ex : VeriSign)

tutoriel-securite-java-j2ee-jee-ssl-tomcat-5

 La commande vous demande le mot de passe du store

tutoriel-securite-java-j2ee-jee-ssl-tomcat-5bis

 La commande génère alors le fichier attendu

tutoriel-securite-java-j2ee-jee-ssl-tomcat-5ter

Ce fihcier est à envoyer à l’autorité de certification, qui après quelques jours enverra le certificat signé.

Vous devrez importer ce certificat :

— > ACTION 1 : télécharger le certificat racine de l’autorité de certification sur son site internet

— > ACTION 2 : importer les fichiers

IMPORTATION DU CERTIFICAT RACINE

keytool -import -alias root -keystore D:formationsecuritejavajeedemosslwwwobjiscom-keystore -trustcacerts -file

IMPORTATION DU NOUVEAU CERTIFICATSIGNE PAR l’autorité de CERTIFICATION

keytool -import -alias signobjis -keystore D:formationsecuritejavajeedemosslwwwobjiscom-keystore -trustcacerts -file

Partie 5 : utiliser Apache HTTPD en frontal de Tomcat

Il existe deux implémentation d’Apache pour fonctionner avec HTTPS :

— Apache-SSL

— Apache avec mod_ssl (recommandé)

Conclusion

Ce tutoriel vous a permis de vous familiariser avec la mise en oeuvre de SSL sous Tomcat.

Pensez à votre carrière !

aujourdhui-developpeur-java-demain-architecte.png

2018-01-28T12:47:22+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java