bg-tutorials

Comment installer un certificat SSL dans Tomcat

Dans ce tutoriel, vous apprendrez comment installer un certificat SSL sur Apache Tomcat en utilisant l’utilitaire Java keytool, puis à configurer le connecteur HTTPS dans server.xml. Si vous n’avez pas encore généré votre CSR, la première section vous montre comment faire.

Nous avons également enregistré une vidéo qui vous guide à travers tout le processus. Vous pouvez regarder la vidéo, lire les instructions, ou faire les deux. Vous pouvez regarder la vidéo ci-dessous.

Générer un code CSR pour Tomcat

CSR signifie Certificate Signing Request (demande de signature de certificat), un bloc de texte contenant les détails actuels sur votre domaine et votre organisation. Chaque acheteur d’un certificat SSL commercial doit soumettre un CSR à l’autorité de certification (le fournisseur SSL) pour passer la validation et recevoir le certificat. Si le CSR contient des détails incorrects, la CA ne le signera pas.

Sur Tomcat, le CSR est créé avec keytool à partir d’un keystore Java, et ce même keystore contient la clé privée que vous réutiliserez lors de l’installation. Vous avez deux options :

Important : conservez une trace du fichier keystore et de l’alias que vous avez utilisés lors de la génération du CSR. Vous importerez plus tard votre certificat signé dans exactement cet alias, car c’est là que se trouve la clé privée correspondante.

Une fois que l’autorité de certification a validé votre demande et vous a envoyé les fichiers SSL, poursuivez avec l’installation ci-dessous.

Installer un certificat SSL dans Tomcat

Une installation sur Tomcat comporte deux étapes : d’abord vous importez la chaîne de certificats et votre certificat signé dans le keystore qui contient déjà votre clé privée, puis vous configurez le connecteur HTTPS dans server.xml pour qu’il utilise ce keystore.

Étape 1 : Préparez vos fichiers de certificat SSL

Votre autorité de certification envoie les fichiers par e-mail à l’adresse que vous avez fournie, généralement sous forme d’archive ZIP. Extrayez-la. Selon la CA, les fichiers arrivent sous l’un des deux formats suivants :

  • PKCS#7 : un seul fichier .p7b (ou .cer) qui regroupe déjà votre certificat avec les certificats racine et intermédiaire.
  • PEM : des fichiers séparés, généralement un fichier .crt pour votre certificat serveur, ainsi que des fichiers individuels root.crt et intermediate.crt.

Téléchargez les fichiers extraits sur le serveur, dans le même répertoire que le keystore à partir duquel vous avez généré votre CSR (appelé ci-dessous example.jks). Identifiez votre format et suivez les instructions correspondantes.

Étape 2 : Importez le certificat dans votre keystore

Format PKCS#7. Comme un fichier .p7b contient déjà la chaîne complète, une seule commande importe tout en une fois, dans votre alias de clé privée existant :

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.p7b

Remplacez ssldragon par votre propre alias et example par les noms de vos fichiers. L’alias doit être celui qui contient déjà votre clé privée (l’alias de l’étape du CSR). Lorsque vous voyez le message Certificate reply was installed in keystore, l’importation a réussi. Vérifiez le contenu du keystore avec :

keytool -list -v -keystore example.jks

Recherchez une entrée dont le type est PrivateKeyEntry avec une chaîne de certificats de longueur supérieure à 1. Cela confirme que le certificat signé est désormais associé à votre clé privée.

Format PEM. Importez les certificats séparément, dans l’ordre de la chaîne : d’abord la racine, puis les éventuels intermédiaires, et enfin votre certificat de domaine. L’importation de la chaîne en premier permet à keytool de construire un chemin de confiance complet avant d’attacher la réponse à votre clé. Importez le certificat racine :

keytool -import -trustcacerts -alias root -keystore example.jks -file root.crt

Puis importez le certificat intermédiaire :

keytool -import -trustcacerts -alias intermediate -keystore example.jks -file intermediate.crt

Si votre CA fournit plusieurs certificats intermédiaires, importez chacun sous son propre alias de confiance, en respectant l’ordre dans lequel ils se signent mutuellement (de la racine jusqu’à votre certificat de domaine). Par exemple, un certificat Sectigo PositiveSSL est livré avec plus d’un intermédiaire, importez-les donc dans l’ordre avant le certificat de domaine.

Enfin, importez votre certificat principal (celui émis pour votre domaine) dans l’alias de clé privée existant, le même alias que celui utilisé lors de la génération du CSR :

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.crt

Ici, ssldragon doit être votre alias de clé privée existant. Comme cet alias possède déjà une clé, keytool traite cette importation comme une réponse de certificat et associe le certificat signé à la clé. C’est cette étape qui fait fonctionner le HTTPS.

Piège critique : n’importez pas le certificat signé sous un alias tout nouveau. Si l’alias n’a pas de clé privée existante, keytool stocke le certificat comme une entrée de confiance autonome sans clé associée, et TLS échouera. Si vous n’êtes pas sûr de savoir quel alias contient votre clé, exécutez keytool -list -v -keystore example.jks et utilisez l’alias dont le type est PrivateKeyEntry.

Étape 3 : Configurez le connecteur HTTPS dans server.xml

Une fois le certificat dans votre keystore, faites pointer le connecteur HTTPS de Tomcat vers celui-ci. Le connecteur est défini dans server.xml, situé dans le dossier conf de votre installation Tomcat (par exemple $CATALINA_HOME/conf/server.xml). Ouvrez le fichier dans un éditeur de texte.

Sur les versions actuelles de Tomcat (9, 10 et 11), la forme recommandée imbrique un élément SSLHostConfig, qui contient à son tour un élément Certificate qui référence votre keystore. Ajoutez ou mettez à jour le connecteur sécurisé pour qu’il ressemble à ceci :

<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true"
    scheme="https"
    secure="true">
  <SSLHostConfig>
    <Certificate
        certificateKeystoreFile="/your_path/example.jks"
        certificateKeystorePassword="your_keystore_password"
        certificateKeystoreType="JKS"
        certificateKeyAlias="ssldragon"
        type="RSA" />
  </SSLHostConfig>
</Connector>
  • certificateKeystoreFile : le chemin complet vers votre fichier keystore.
  • certificateKeystorePassword : le mot de passe du keystore.
  • certificateKeystoreType : JKS pour un keystore .jks, ou PKCS12 pour un keystore .p12 / .pfx.
  • certificateKeyAlias : l’alias qui contient votre clé privée et votre certificat signé (ici, ssldragon). Cela indique à Tomcat quelle entrée servir lorsque le keystore en contient plusieurs.

Remarque : le port 443 est le port HTTPS standard utilisé ci-dessus ; les exemples propres à Tomcat utilisent par défaut le port 8443, alors utilisez celui que votre environnement attend. S’il s’agit de votre première configuration HTTPS, le connecteur sécurisé peut être commenté dans server.xml. Retirez les marqueurs de commentaire environnants pour que le connecteur soit actif, et assurez-vous qu’aucun autre connecteur n’est déjà lié au même port.

Forme héritée (anciennes versions de Tomcat). Les anciens guides placent les détails du keystore directement sur le connecteur sous forme d’attributs keystoreFile et keystorePass. Ce style est remplacé par les éléments SSLHostConfig et Certificate présentés ci-dessus, qui constituent la forme à utiliser sur les versions de Tomcat prises en charge.

Étape 4 : Enregistrez server.xml et redémarrez Tomcat

Enregistrez server.xml, puis redémarrez Tomcat pour qu’il recharge la configuration. Sous Linux, utilisez les scripts fournis :

$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

Si Tomcat s’exécute comme un service, redémarrez-le plutôt via votre gestionnaire de services (par exemple systemctl restart tomcat sous Linux, ou le panneau Services sous Windows). Félicitations, votre certificat SSL est désormais installé sur votre serveur Tomcat.

Testez votre installation SSL Tomcat

Après avoir installé le certificat, de petites erreurs peuvent passer inaperçues et affecter la façon dont les navigateurs traitent votre site. Prenez l’habitude de vérifier l’installation. Utilisez notre SSL Checker pour une analyse instantanée qui révèle des problèmes tels qu’un certificat intermédiaire manquant ou une chaîne non fiable.

Questions fréquemment posées

Pourquoi mon certificat SSL Tomcat ne fonctionne-t-il pas après son importation ?

La cause habituelle est l’importation du certificat signé sous un nouvel alias au lieu de l’alias qui contient déjà votre clé privée. keytool le stocke alors comme une entrée de certificat de confiance sans clé, ce qui empêche Tomcat de terminer une négociation TLS. Réimportez la réponse signée dans l’alias de clé privée existant (celui de votre CSR). Vérifiez que cela a fonctionné en exécutant keytool -list -v -keystore example.jks et en vérifiant que l’alias apparaît comme un PrivateKeyEntry avec une chaîne de plus d’un certificat.

Dois-je importer la chaîne de certificats ou mon certificat de domaine en premier ?

Importez d’abord la chaîne. Ajoutez la racine et les éventuels certificats intermédiaires comme entrées de confiance, dans l’ordre, puis importez votre certificat de domaine dans l’alias de clé privée en dernier. Cela permet à keytool de construire un chemin de confiance complet avant d’attacher la réponse à votre clé. Avec un fichier PKCS#7 (.p7b), la chaîne est déjà regroupée, donc une seule importation suffit pour tout traiter.

Où se trouve le fichier de configuration SSL de Tomcat ?

Le connecteur HTTPS est défini dans server.xml, dans le répertoire conf de votre installation Tomcat (par exemple $CATALINA_HOME/conf/server.xml). Sur les versions actuelles de Tomcat, le keystore est référencé via un élément imbriqué SSLHostConfig et Certificate plutôt que directement sur le connecteur.

Puis-je utiliser un keystore PKCS12 au lieu de JKS sur Tomcat ?

Oui. Tomcat prend en charge les deux. Définissez certificateKeystoreType sur PKCS12 pour un keystore .p12 ou .pfx, ou sur JKS pour un keystore .jks, et faites pointer certificateKeystoreFile vers le fichier correspondant. PKCS12 est le format de keystore standard et portable, ce qui en fait un bon choix par défaut pour les nouveaux keystores.

Quel port Tomcat utilise-t-il pour HTTPS ?

La configuration d’exemple de Tomcat utilise le port 8443 pour le connecteur sécurisé. Pour servir le HTTPS sur le port standard que les navigateurs utilisent par défaut, définissez le port du connecteur sur 443 et assurez-vous qu’aucun autre connecteur ou service ne l’utilise déjà.

Comment redémarrer Tomcat après avoir modifié la configuration SSL ?

Exécutez les scripts fournis $CATALINA_HOME/bin/shutdown.sh suivi de $CATALINA_HOME/bin/startup.sh, ou redémarrez le service Tomcat via votre gestionnaire de services (par exemple systemctl restart tomcat sous Linux, ou le panneau Services sous Windows). Un redémarrage est nécessaire pour que les modifications apportées à server.xml prennent effet.

Economisez 10% sur les certificats SSL en commandant aujourd’hui!

Émission rapide, cryptage puissant, confiance de 99,99 % du navigateur, assistance dédiée et garantie de remboursement de 25 jours. Code de coupon: SAVE10

Image détaillée d'un dragon en vol
Rédigé par

Rédacteur de contenu expérimenté spécialisé dans les certificats SSL. Transformer des sujets complexes liés à la cybersécurité en un contenu clair et attrayant. Contribuer à l'amélioration de la sécurité numérique par des récits percutants.