Un guide détaillé pour l’implémentation d’un certificat SSL/TLS sur un serveur Tomcat.
La sécurisation de Tomcat passe inévitablement par la configuration d’un certificat SSL, rendant ainsi votre application web accessible via HTTPS.
Il existe plusieurs méthodes pour réaliser cette opération.
- Vous pouvez déléguer la terminaison SSL à un équilibreur de charge.
- Mettre en place SSL au niveau du CDN.
- Utiliser des serveurs web tels qu’Apache ou Nginx comme interface, et y implémenter SSL.
Cependant, si vous n’utilisez aucune de ces options, ou si vous employez Tomcat comme serveur frontal, ou encore si vous devez déployer SSL directement dans Tomcat, les instructions suivantes vous seront précieuses.
Dans cet article, nous aborderons les points suivants :
- La création d’une CSR (demande de signature de certificat).
- L’importation d’un certificat dans un fichier de clés (keystore).
- L’activation de SSL dans Tomcat.
- La configuration du protocole TLS.
- La modification du port d’écoute de Tomcat vers le port 443.
- Le test de Tomcat pour identifier les vulnérabilités SSL.
Commençons sans plus tarder…
Préparation du Certificat SSL/TLS
La première étape consiste à générer une CSR et à la faire signer par une autorité de certification. L’utilitaire keytool sera utilisé pour la gestion des certificats.
- Connectez-vous au serveur Tomcat.
- Accédez au répertoire d’installation de Tomcat.
- Créez un dossier nommé ssl.
- Exécutez la commande pour créer un keystore.
keytool -genkey -alias nomdedomaine -keyalg RSA -keysize 2048 -keystore nomfichier.jks
Dans les commandes ci-dessus, deux variables nécessitent une attention particulière :
Exemple :
[[email protected] ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks Entrez le mot de passe du keystore: Confirmez le nouveau mot de passe: Quel est votre prénom et votre nom de famille? [Inconnu]: bloggerflare.com Quel est le nom de votre unité organisationnelle? [Inconnu]: Blogging Quel est le nom de votre organisation? [Inconnu]: Geek Flare Quel est le nom de votre ville ou localité? [Inconnu]: Quel est le nom de votre État ou province? [Inconnu]: Quel est le code pays à deux lettres pour cette unité? [Inconnu]: Est-ce que CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=Inconnu, ST=Inconnu, C=Inconnu est correct? [non]: oui Entrez le mot de passe de la clé pour <bloggerflare> (RETOUR si identique au mot de passe du keystore): [[email protected] ssl]#
Soyez attentif à la question du prénom et nom de famille. C’est en réalité le nom de domaine que vous souhaitez sécuriser.
Une fois toutes les informations renseignées, un fichier keystore sera créé dans le répertoire de travail actuel.
L’étape suivante consiste à générer une CSR à partir du keystore créé en utilisant la commande ci-dessous :
keytool -certreq -alias bloggerflare -keyalg RSA -file bloggerflare.csr -keystore bloggerflare.jks
Ceci créera un fichier CSR à soumettre à l’autorité de certification pour signature. Pour des essais, vous pouvez envisager d’utiliser un fournisseur de certificats GRATUIT, sinon optez pour un fournisseur premium.
Le certificat ayant été signé, nous allons maintenant l’importer dans le keystore à l’aide des commandes suivantes.
- Importation du certificat racine fourni par le fournisseur
keytool -importcert -alias root -file root -keystore bloggerflare.jks
- Importation d’un certificat intermédiaire
keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks
Note : l’importation des certificats racine et intermédiaires est nécessaire avant de pouvoir importer le certificat de domaine dans le keystore. Si vous avez plusieurs certificats intermédiaires, importez les tous.
- Importation du certificat de domaine
keytool -importcert -file bloggerflare.cer -keystore bloggerflare.jks -alias bloggerflare
Une confirmation de l’installation du certificat sera affichée.
La réponse du certificat a été installée dans le keystore.
Le keystore est prêt. Passons à l’étape suivante.
Si vous débutez avec SSL et souhaitez en savoir plus, inscrivez-vous à cette formation en ligne : Opérations SSL/TLS.
Activation de SSL dans Tomcat
Assurez-vous d’être toujours connecté au serveur Tomcat et accédez au dossier « conf ».
- Effectuez une sauvegarde du fichier server.xml.
- Trouvez la section
<Connector port="8080" protocol="HTTP/1.1"
et ajoutez une ligne.
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
- Pensez à adapter le nom du fichier keystore et le mot de passe avec vos propres informations.
- Redémarrez Tomcat, et vous devriez constater que Tomcat est accessible via HTTPS.
Succès !
Port HTTPS standard
Pourquoi cette étape ?
Comme vous pouvez le constater dans la capture d’écran précédente, l’accès à Tomcat se fait sur le port 8080 avec https, ce qui n’est pas conventionnel. De plus, plusieurs raisons justifient cette modification.
- Il est préférable d’éviter de demander aux utilisateurs de spécifier un port personnalisé.
- Le navigateur émettra un avertissement, car le certificat est émis pour le nom de domaine sans le port.
L’objectif est donc de configurer Tomcat pour qu’il écoute sur le port 443, permettant ainsi un accès via https:// sans numéro de port.
Pour ce faire, modifiez le fichier server.xml avec votre éditeur préféré.
- Repérez la ligne
<Connector port="8080"
. - Remplacez le port 8080 par 443.
- Cela devrait ressembler à ceci :
<Connector port="443" protocol="HTTP/1.1" connectionTimeout="20000" SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS" redirectPort="8443" />
- Redémarrez Tomcat et accédez à votre application via https sans numéro de port.
Magnifique, c’est une réussite !
Test de vulnérabilité SSL/TLS
Enfin, nous allons vérifier que l’installation ne présente aucune vulnérabilité aux menaces en ligne.
De nombreux outils en ligne existent, ceux dont j’ai parlé ici, et nous allons utiliser SSL Labs.
- Rendez-vous sur SSL Labs et saisissez l’URL pour lancer le test.
C’est un résultat VERT – une note A.
Cependant, il est toujours conseillé de parcourir le rapport pour identifier d’éventuelles vulnérabilités et les corriger.
C’est tout pour aujourd’hui.
J’espère que ce guide vous sera utile pour sécuriser votre serveur Tomcat avec un certificat SSL/TLS. Si vous souhaitez approfondir vos connaissances, je vous recommande vivement ce cours.