Tous les produits
Search
Centre de documentation

Certificate Management Service:Installer un certificat SSL sur un serveur Tomcat (Linux)

Dernière mise à jour :Sep 18, 2026

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.com s'applique uniquement à example.com.

      • Un certificat pour www.example.com s'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.com s'applique aux sous-domaines de premier niveau tels que www.example.com et a.example.com.

      • Un certificat pour *.example.com ne s'applique pas au domaine racine example.com ni aux sous-domaines multi-niveaux tels que a.b.example.com.

    Remarque

    Pour 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 root ou un compte disposant des autorisations sudo.

  • 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 :

  1. Téléchargez le package de certificats depuis la console Certificate Management Service et transférez les fichiers vers votre serveur.

  2. Ouvrez le port 443 dans votre groupe de sécurité et votre pare-feu.

  3. Modifiez le fichier server.xml pour ajouter le connecteur SSL, puis redémarrez Tomcat.

  4. Accédez à https://yourdomain dans 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.com protège uniquement example.com, et www.example.com protège uniquement www.example.com.

    • Nom de domaine générique : S'applique uniquement aux sous-domaines de premier niveau. Par exemple, *.example.com couvre www.example.com et a.example.com, mais ne couvre pas le domaine racine example.com ni les sous-domaines multi-niveaux tels que a.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 root ou un compte disposant des privilèges sudo sur 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

  1. 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.

  2. Extrayez le package téléchargé. Il contient un fichier de certificat (.pfx ou .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.
  3. Transférez le fichier de certificat (.pfx ou .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.

    Important

    Aprè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 :

  1. Accédez aux instances Elastic Compute Service (ECS) et cliquez sur le nom de l'instance cible.

  2. 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

  1. Depuis le répertoire racine de Tomcat, ouvrez le fichier server.xml :

    sudo vim ./conf/server.xml
  2. 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"
               />
  3. 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 certificateKeystoreFile par le chemin réel vers votre fichier de certificat, et remplacez la valeur certificateKeystorePassword par le contenu du fichier de mot de passe correspondant.

  4. Mettez à jour le redirectPort du 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

  1. Validez la configuration. Depuis le répertoire bin de Tomcat, exécutez :

    ./configtest.sh

    Si 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.

  2. 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é.

image

À partir de la version 117, Chrome a remplacé l'icône image par une nouvelle icône image. 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 :

  1. 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.

  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.

  3. 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.

  4. Chemin ou fichier de certificat incorrect. Vérifiez que certificateKeystoreFile (ou keystoreFile) dans server.xml pointe vers le fichier de certificat correct et à jour.

  5. 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.

  6. 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 :

  1. 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.

  2. Mettez à jour l'attribut certificateKeystorePassword (ou keystorePass) dans server.xml avec cette valeur.

  3. Confirmez que certificateKeystoreFile (ou keystoreFile) pointe vers le bon chemin de fichier.

  4. 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 :

  1. 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.

  2. Vérifiez que Tomcat est en cours d'exécution : ps -ef | grep tomcat

  3. Confirmez que l'attribut port dans le connecteur SSL de server.xml correspond au port auquel vous accédez.

Comment mettre à jour ou remplacer un certificat SSL dans Tomcat

  1. Sauvegardez les fichiers existants. Enregistrez des copies du fichier de certificat actuel (.pfx ou .jks) et du fichier de mot de passe (.txt) depuis le serveur.

  2. Téléchargez le nouveau certificat. Obtenez le nouveau package de certificats depuis la console Certificate Management Service.

  3. 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.

  4. Redémarrez Tomcat. Exécutez sudo ./shutdown.sh et sudo ./startup.sh depuis le répertoire bin de Tomcat pour appliquer le nouveau certificat.