Un guide pas à pas pour configurer un certificat SSL/TLS dans le serveur Tomcat.
L’une des tâches essentielles pour sécuriser Tomcat est de configurer le certificat SSL, afin que l’application web soit accessible via HTTPS.
Il existe plusieurs façons d’y parvenir.
- Vous pouvez mettre fin à SSL au niveau d’un équilibreur de charge
- Implémenter SSL au niveau du CDN
- Utiliser des serveurs web comme Apache, Nginx, etc. en amont et implémenter SSL à ce niveau
Cependant, si vous n’utilisez pas l’une des solutions ci-dessus ou si vous l’utilisez en tant que serveur frontal ou si vous avez besoin de déployer SSL directement dans Tomcat, alors ce qui suit vous aidera.
Dans cet article, nous allons procéder comme suit.
- Générer une CSR (demande de signature de certificat)
- Importer le certificat dans un fichier keystore
- Activer SSL dans Tomcat
- Configurer le protocole TLS
- Modifier Tomcat pour qu’il écoute sur le port 443
- Testez la vulnérabilité de Tomcat à l’égard de SSL
Commençons…
Préparation du certificat SSL/TLS
La première étape consiste à générer un CSR et à le faire signer par l’autorité de certification. Nous utiliserons l’utilitaire keytool
pour gérer les certificats.
- Connectez-vous au serveur Tomcat
- Allez dans le chemin d’installation de Tomcat
- Créez un dossier appelé ssl
- Exécutez la commande pour créer un keystore
keytool -genkey -alias domainname -keyalg RSA -keysize 2048 -keystore filename.jks
Il y a deux variables dans les commandes ci-dessus que vous voudrez peut-être modifier.
- Alias – il est préférable de le garder significatif pour qu’à l’avenir vous puissiez le reconnaître rapidement. Je préfère le garder comme un nom de domaine.
- Nom de fichier – là encore, il est préférable de conserver le nom de domaine.
Ex :
[root@geekflare ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks
Saisissez le mot de passe du keystore :
Saisissez à nouveau le nouveau mot de passe :
Quels sont vos nom et prénom ?
[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 de cette unité ?
[Inconnu] :
CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=inconnu, ST=inconnu, C=inconnu est-il correct ?
[non]: oui
Entrez le mot de passe clé pour <bloggerflare>
(RETOUR si le mot de passe est le même que celui du keystore) :
[root@geekflare ssl]#
Faites attention à la question du nom et du prénom. Je pense que c’est un peu trompeur. Ce n’est pas votre nom mais le nom de domaine que vous voulez sécuriser.
Une fois que vous avez fourni toutes les informations, un fichier keystore sera créé dans le répertoire de travail actuel.
L’étape suivante consiste à générer une nouvelle CSR avec le keystore nouvellement créé à l’aide de la commande suivante.
keytool -certreq -alias bloggerflare -keyalg RSA -file bloggerflare.csr -keystore bloggerflare.jks
Cela créera un CSR que vous devrez envoyer à l’autorité de certification pour le faire signer. Si vous vous amusez, vous pouvez envisager d’utiliser un fournisseur de certificats GRATUIT ou d’opter pour un fournisseur premium.
J’ai fait signer le certificat et je vais procéder à l’importation dans le keystore avec la commande ci-dessous.
- Importez le certificat racine fourni par le fournisseur
keytool -importcert -alias root -file root -keystore bloggerflare.jks
- Importer un certificat intermédiaire
keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks
Remarque: si vous n’importez pas les certificats racine et intermédiaire, vous ne pourrez pas importer le certificat de domaine dans le keystore. Si vous avez plus d’un intermédiaire, vous devez tous les importer.
- Importer le certificat de domaine
keytool -importcert -file bloggerflare.cer -keystore bloggerflare.jks -alias bloggerflare
et vous obtiendrez une confirmation de son installation.
Le certificat réponse a été installé dans le keystore
Parfait, le keystore du certificat est maintenant prêt. Passons à l’étape suivante.
Si vous êtes novice en matière de SSL et que vous souhaitez en savoir plus, inscrivez-vous à ce cours en ligne – SSL/TLS Operations.
Activer SSL dans Tomcat
En supposant que vous êtes toujours connecté au serveur Tomcat, allez dans le dossier conf
- Faites une sauvegarde du fichier server.xml
- Allez dans 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"
- N’oubliez pas de remplacer le nom du fichier keystore et le mot de passe par les vôtres
- Redémarrez Tomcat et vous devriez voir que Tomcat est accessible via HTTPS
Super !
Port HTTPS standard
Pourquoi ?
Si vous regardez la capture d’écran ci-dessus, j’accède à Tomcat via 8080 avec https, ce qui n’est pas standard, et d’autres raisons encore.
- Vous ne voulez pas demander aux utilisateurs d’utiliser un port personnalisé
- Le navigateur émettra un avertissement car le certificat est émis sur le nom de domaine sans le port
L’idée est donc de faire écouter Tomcat sur le port 443 afin qu’il soit accessible via https:// sans le numéro de port.
Pour ce faire, éditez server.xml avec votre éditeur préféré
- Allez à
<Connector port="8080"
- Changez le port de 8080 à 443
- Cela devrait ressembler à ceci
<Connecteur 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 avec https sans aucun numéro de port
Impressionnant, c’est un succès !
Test de vulnérabilité SSL/TLS
Enfin, nous effectuerons un test pour nous assurer qu’il n’est pas vulnérable aux menaces en ligne.
Il existe de nombreux outils en ligne dont j’ai parlé ici, et j’utiliserai ici SSL Labs.
- Allez sur SSL Lab s et entrez l’URL pour commencer le test
Et c’est VERT – note A.
Cependant, il est toujours bon de faire défiler le rapport pour voir si vous trouvez une vulnérabilité et la corriger.
C’était donc tout pour aujourd’hui.
J’espère que cela vous aidera à connaître la procédure de sécurisation de Tomcat avec un certificat SSL/TLS. Si vous souhaitez en savoir plus, je vous recommande vivement ce cours.