Installez un certificat SSL au format Java KeyStore (JKS) ou PFX/PKCS#12 sur un serveur Tomcat sous Linux pour activer le protocole HTTPS. Ce guide explique comment télécharger le certificat, configurer le fichier server.xml de Tomcat, ouvrir le port 443 et vérifier le déploiement.
Prérequis
Avant de commencer, vérifiez que les conditions suivantes sont remplies :
Statut du certificat : Vous disposez d'un certificat SSL émis par une autorité de certification (CA) de confiance. Si votre certificat est sur le point d'expirer ou a déjà expiré, renouvelez-le.
-
Correspondance des noms de domaine : Assurez-vous que le certificat couvre tous les noms de domaine à protéger. Pour ajouter ou modifier un nom de domaine, achetez un certificat payant ou ajoutez et remplacez des noms de domaine.
-
Nom de domaine exact : Un certificat de nom de domaine exact s'applique uniquement au nom de domaine spécifié.
Un certificat pour
example.coms'applique uniquement àexample.com.Un certificat pour
www.example.coms'applique uniquement àwww.example.com.
-
Nom de domaine générique (wildcard) : Un certificat de nom de domaine générique s'applique uniquement aux sous-domaines de premier niveau.
Un certificat pour
*.example.coms'applique aux sous-domaines de premier niveau tels quewww.example.cometa.example.com.Un certificat pour
*.example.comne s'applique pas au domaine racineexample.comni aux sous-domaines multi-niveaux tels quea.b.example.com.
RemarquePour couvrir un sous-domaine multi-niveau, le champ Bound Domains doit inclure le nom de domaine spécifique (par exemple,
a.b.example.com) ou un nom de domaine générique correspondant (par exemple,*.b.example.com). -
Autorisations du serveur : Utilisez le compte
rootou un compte disposant des autorisationssudo.Résolution DNS : Le nom de domaine pointe vers l'adresse IP publique du serveur.
Démarrage rapide
Le processus d'installation comporte quatre étapes :
Téléchargez le package de certificats depuis la console Certificate Management Service et transférez les fichiers vers votre serveur.
Ouvrez le port 443 dans votre groupe de sécurité et votre pare-feu.
Modifiez le fichier
server.xmlpour ajouter le connecteur SSL, puis redémarrez Tomcat.Accédez à
https://yourdomaindans un navigateur et vérifiez la présence de l'icône de cadenas.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un certificat SSL émis par une autorité de certification (CA) de confiance. Si le certificat est sur le point d'expirer ou a déjà expiré, renouvelez-le.
-
Un certificat correspondant à tous les noms de domaine à sécuriser : Pour ajouter ou modifier des noms de domaine, achetez un certificat commercial ou ajoutez et remplacez des noms de domaine.
Nom de domaine exact : S'applique uniquement au domaine spécifié. Par exemple,
example.comprotège uniquementexample.com, etwww.example.comprotège uniquementwww.example.com.Nom de domaine générique : S'applique uniquement aux sous-domaines de premier niveau. Par exemple,
*.example.comcouvrewww.example.cometa.example.com, mais ne couvre pas le domaine racineexample.comni les sous-domaines multi-niveaux tels quea.b.example.com.
Pour sécuriser un sous-domaine multi-niveau, le champ Bound Domains doit contenir soit le sous-domaine exact (par exemple,
a.b.example.com), soit un domaine générique correspondant (par exemple,*.b.example.com). Un compte
rootou un compte disposant des privilègessudosur le serveur.Un enregistrement DNS pour le domaine qui pointe vers l'adresse IP publique du serveur.
Étape 1 : Préparer les fichiers de certificat
Accédez à la page SSL Certificates. Dans la colonne Actions du certificat cible, cliquez sur Download Certificate. Dans l'onglet Download, sélectionnez Tomcat comme Server Type et téléchargez le package.
-
Extrayez le package téléchargé. Il contient un fichier de certificat (
.pfxou.jks) et un fichier de mot de passe (.txt).Choisissez le format de certificat adapté à votre environnement : - JKS (Java KeyStore) : Format de keystore spécifique à Java. Choisissez JKS si vos outils et scripts le prennent déjà en charge. - PFX/PKCS#12 : Format universel pris en charge par Java et d'autres plateformes. Choisissez PFX pour intégrer différentes piles technologiques ou avec des systèmes non-Java.
-
Transférez le fichier de certificat (
.pfxou.jks) et le fichier de mot de passe (.txt) vers le serveur. Stockez-les dans un répertoire sécurisé, tel que/etc/ssl/cert/. Utilisez la fonction de transfert de fichiers d'un outil de connexion à distance tel que PuTTY, Xshell ou WinSCP. Si vous utilisez une instance Elastic Compute Service (ECS) d'Alibaba Cloud, consultez Upload or download files pour obtenir des instructions.ImportantAprès le transfert, restreignez l'accès aux fichiers de certificat. Autorisez uniquement l'utilisateur Tomcat à les lire :
sudo chown tomcat:tomcat /etc/ssl/cert/domain_name.* sudo chmod 400 /etc/ssl/cert/domain_name.*
Étape 2 : Ouvrir le port 443
Tomcat nécessite l'ouverture du port 443 à deux niveaux : le groupe de sécurité cloud et le pare-feu du système d'exploitation.
Ouvrir le port 443 dans le groupe de sécurité
Si votre serveur s'exécute sur Alibaba Cloud ECS, ajoutez une règle entrante pour autoriser le trafic TCP sur le port 443 :
Accédez aux instances Elastic Compute Service (ECS) et cliquez sur le nom de l'instance cible.
-
Dans la section Security Group Details, ajoutez une règle de groupe de sécurité avec les paramètres suivants et enregistrez. Pour les autres plateformes cloud, reportez-vous à leur documentation.
Champ Valeur Action Allow Protocol Custom TCP Destination (Current Instance) HTTPS (443) Source 0.0.0.0/0 (anywhere)
Ouvrir le port 443 dans le pare-feu du système d'exploitation
Vérifiez d'abord si le port 443 est déjà accessible. Exécutez la commande suivante selon votre distribution Linux :
RHEL/CentOS
command -v nc > /dev/null 2>&1 || sudo yum install -y nc
# Replace <your_server_public_ip> with your server's public IP address.
sudo ss -tlnp | grep -q ':443 ' || sudo nc -l 443 & sleep 1; nc -w 3 -vz <your_server_public_ip> 443
Si la sortie contient Ncat: Connected to <your_server_public_ip>:443, le port 443 est ouvert et aucune autre action n'est nécessaire.
Debian/Ubuntu
command -v nc > /dev/null 2>&1 || sudo apt-get install -y netcat
# Replace <your_server_public_ip> with your server's public IP address.
sudo ss -tlnp | grep -q ':443 ' || sudo nc -l -p 443 & sleep 1; nc -w 3 -vz <your_server_public_ip> 443
Si la sortie contient Connection to <your_server_public_ip> port [tcp/https] succeeded! ou [<your_server_public_ip>] 443 (https) open, le port 443 est ouvert et aucune autre action n'est nécessaire.
Si le port 443 n'est pas ouvert, identifiez le pare-feu actif et ouvrez le port :
if command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet firewalld; then
echo "firewalld"
elif command -v ufw >/dev/null 2>&1 && sudo ufw status | grep -qw active; then
echo "ufw"
elif command -v nft >/dev/null 2>&1 && sudo nft list ruleset 2>/dev/null | grep -q 'table'; then
echo "nftables"
elif command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet iptables; then
echo "iptables"
elif command -v iptables >/dev/null 2>&1 && sudo iptables -L 2>/dev/null | grep -qE 'REJECT|DROP|ACCEPT'; then
echo "iptables"
else
echo "none"
fi
Si la sortie est none, aucun pare-feu n'est actif. Sinon, exécutez la commande correspondant à votre pare-feu :
firewalld
sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reload
ufw
sudo ufw allow 443/tcp
nftables
sudo nft add table inet filter 2>/dev/null
sudo nft add chain inet filter input '{ type filter hook input priority 0; }' 2>/dev/null
sudo nft add rule inet filter input tcp dport 443 counter accept 2>/dev/null
iptables
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Pour rendre les règles iptables persistantes après un redémarrage :
-
RHEL/CentOS :
sudo yum install -y iptables-services sudo service iptables save -
Debian/Ubuntu :
sudo apt-get install -y iptables-persistent sudo iptables-save | sudo tee /etc/iptables/rules.v4 >/dev/null
Étape 3 : Configurer Tomcat
La syntaxe de configuration diffère légèrement selon les versions de Tomcat. Suivez la section correspondant à votre version.
Tomcat 9
-
Depuis le répertoire racine de Tomcat, ouvrez le fichier
server.xml:sudo vim ./conf/server.xml -
Configurez le connecteur de redirection HTTP. Mettez à jour le connecteur HTTP existant pour rediriger le trafic vers le port 443 :
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" maxParameterCount="1000" /> -
Ajoutez le connecteur SSL. Choisissez le bloc correspondant au format de votre certificat :
Format PFX
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" maxParameterCount="1000" > <SSLHostConfig> <Certificate certificateKeystoreFile="/etc/ssl/cert/domain_name.pfx" certificateKeystorePassword="<password-from-pfx-password.txt>" type="RSA" /> </SSLHostConfig> </Connector>Format JKS
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" maxParameterCount="1000" > <SSLHostConfig> <Certificate certificateKeystoreFile="/etc/ssl/cert/domain_name.jks" certificateKeystorePassword="<password-from-jks-password.txt>" type="RSA" /> </SSLHostConfig> </Connector>Remplacez le chemin
certificateKeystoreFilepar le chemin réel vers votre fichier de certificat, et remplacez la valeurcertificateKeystorePasswordpar le contenu du fichier de mot de passe correspondant. -
Mettez à jour le
redirectPortdu connecteur AJP à 443 :<Connector protocol="AJP/1.3" address="::1" port="8009" redirectPort="443" maxParameterCount="1000" />
Tomcat 8.5
Tomcat 8.5 nécessite de spécifier manuellement l'implémentation JSSE. La syntaxe du connecteur est la même que pour Tomcat 9 ci-dessus. Ajoutez le connecteur SSL en utilisant le bloc PFX ou JKS de la section Tomcat 9.
Tomcat 7
Tomcat 7 utilise des attributs SSL inline sur l'élément Connector plutôt que des éléments imbriqués SSLHostConfig.
Format PFX
<Connector port="443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="/etc/ssl/cert/domain_name.pfx"
keystoreType="PKCS12"
keystorePass="<password-from-pfx-password.txt>"
clientAuth="false"
SSLProtocol="TLSv1.1+TLSv1.2+TLSv1.3"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
Format JKS
<Connector port="443"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectport="8443"
maxParameterCount="1000"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="/etc/ssl/cert/domain_name.jks"
keystoreType="JKS"
keystorePass="<password-from-jks-password.txt>"
clientAuth="false"
SSLProtocol="TLSv1.1+TLSv1.2+TLSv1.3"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
(Facultatif) Forcer la redirection HTTP vers HTTPS
Pour rediriger automatiquement toutes les requêtes HTTP vers HTTPS, ajoutez le bloc suivant à la fin du fichier conf/web.xml, juste avant la balise de fermeture </web-app> :
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Valider et redémarrer Tomcat
-
Validez la configuration. Depuis le répertoire
binde Tomcat, exécutez :./configtest.shSi la sortie est
Configuration file test successful, la configuration est valide. En cas d'erreurs, corrigez la configuration selon les messages d'erreur et relancez la validation. -
Redémarrez Tomcat pour appliquer les modifications :
sudo ./shutdown.sh sudo ./startup.sh
Étape 4 : Vérifier le déploiement
Ouvrez un navigateur et accédez à https://yourdomain (remplacez yourdomain par votre domaine réel).
Une icône de cadenas dans la barre d'adresse confirme que le certificat est correctement installé.

À partir de la version 117, Chrome a remplacé l'icône
par une nouvelle icône
. Cliquez sur cette icône pour afficher les détails du certificat.
Si l'icône de cadenas n'apparaît pas ou si vous rencontrez des erreurs d'accès, videz le cache du navigateur ou réessayez en mode navigation privée. Consultez la section FAQ si le problème persiste.
Mise en production
Lors du déploiement en production, appliquez les bonnes pratiques suivantes :
-
Exécutez Tomcat en tant qu'utilisateur non-root. Créez un compte système dédié à faibles privilèges pour Tomcat et ne l'exécutez jamais en tant que root.
Envisagez plutôt de terminer le SSL au niveau de la passerelle — déployez le certificat sur un Server Load Balancer (SLB) ou un proxy inverse tel que Nginx. La passerelle gère la terminaison HTTPS et transmet le HTTP simple au backend, ce qui simplifie la gestion des certificats sur plusieurs serveurs.
Gardez les identifiants hors des fichiers de configuration. Utilisez des variables d'environnement, un gestionnaire de secrets ou un service de gestion de clés cloud pour injecter le mot de passe du keystore au moment de l'exécution plutôt que de le coder en dur dans
server.xml.Forcez la redirection HTTP vers HTTPS. Redirigez tout le trafic HTTP vers HTTPS pour prévenir les attaques de type « homme du milieu » (voir l'étape facultative dans Étape 3).
Désactivez les anciens protocoles TLS. Désactivez SSLv3, TLS 1.0 et TLS 1.1 dans votre configuration Tomcat. Activez uniquement TLS 1.2 et TLS 1.3.
Surveillez l'expiration des certificats. Après le déploiement, activez la surveillance des domaines dans Certificate Management Service. Alibaba Cloud vérifie la validité des certificats et envoie des rappels de renouvellement avant l'expiration. Pour obtenir des instructions, consultez Purchase and enable public domain name monitoring.
FAQ
HTTPS est inaccessible après l'installation ou la mise à jour du certificat
Vérifiez les points suivants dans l'ordre :
Port 443 bloqué. Vérifiez que le groupe de sécurité et le pare-feu du système d'exploitation autorisent le trafic TCP entrant sur le port 443. Consultez Étape 2.
Incompatibilité de domaine. Confirmez que le domaine auquel vous accédez est répertorié dans le champ Bound Domains du certificat. Consultez la section Prérequis pour les règles de correspondance des domaines.
Tomcat non redémarré. La nouvelle configuration prend effet uniquement après le redémarrage de Tomcat. Consultez les étapes de validation et de redémarrage dans Étape 3.
Chemin ou fichier de certificat incorrect. Vérifiez que
certificateKeystoreFile(oukeystoreFile) dansserver.xmlpointe vers le fichier de certificat correct et à jour.Certificat manquant sur les services amont. Si votre domaine passe par un Content Delivery Network (CDN), un Server Load Balancer (SLB) ou un Web Application Firewall (WAF), le certificat doit également être installé sur ces services. Consultez Certificate deployment locations when traffic passes through multiple Alibaba Cloud services.
Déploiement multi-serveurs incomplet. Si le DNS du domaine pointe vers plusieurs serveurs, installez le certificat sur tous les serveurs.
Pour un dépannage plus approfondi, consultez Resolve certificate deployment issues based on browser error messages et le guide de dépannage des échecs de déploiement de certificats SSL.
Tomcat ne démarre pas et le journal affiche l'erreur « Keystore was tampered with, or password was incorrect »
Cela signifie presque toujours que le mot de passe dans server.xml ne correspond pas au fichier keystore. Pour résoudre ce problème :
Ouvrez le fichier de mot de passe (
.txt) du package de certificats et copiez son contenu exactement, sans espaces ni sauts de ligne supplémentaires.Mettez à jour l'attribut
certificateKeystorePassword(oukeystorePass) dansserver.xmlavec cette valeur.Confirmez que
certificateKeystoreFile(oukeystoreFile) pointe vers le bon chemin de fichier.Confirmez que l'utilisateur Tomcat dispose de l'autorisation de lecture sur le fichier de certificat.
La connexion a été réinitialisée / Connexion refusée lors de l'accès au serveur
Il s'agit d'un problème de connectivité réseau, et non d'un problème de certificat. Vérifiez les points suivants :
Confirmez que le groupe de sécurité et le pare-feu du système d'exploitation autorisent le trafic entrant sur le port 443 (ou sur le port configuré dans
server.xml). Consultez Étape 2.Vérifiez que Tomcat est en cours d'exécution :
ps -ef | grep tomcatConfirmez que l'attribut
portdans le connecteur SSL deserver.xmlcorrespond au port auquel vous accédez.
Comment mettre à jour ou remplacer un certificat SSL dans Tomcat
Sauvegardez les fichiers existants. Enregistrez des copies du fichier de certificat actuel (
.pfxou.jks) et du fichier de mot de passe (.txt) depuis le serveur.Téléchargez le nouveau certificat. Obtenez le nouveau package de certificats depuis la console Certificate Management Service.
Remplacez les fichiers. Transférez les nouveaux fichiers de certificat et de mot de passe vers le même chemin sur le serveur, en écrasant les anciens. Le chemin et le nom du fichier doivent correspondre exactement à ce qui est configuré dans
server.xml.Redémarrez Tomcat. Exécutez
sudo ./shutdown.shetsudo ./startup.shdepuis le répertoirebinde Tomcat pour appliquer le nouveau certificat.