Skip to main content
Skip table of contents

Création ou renouvellement d'un certificat SSL sur un tomcat 9.0.45

Pré-requis

  •        Les services web et/ou tempo doivent être installés et fonctionnels.

  •        Avoir le mot de passe root

  • Open SSL, la librairie tomcat native et le connecteur APR sont installés

ATTENTION : Les ports de communication inférieurs à 1024 ne doivent pas être utilisés car réservé à l’utilisateur root. Pour le tomcat sur le serveur Linux on peut par exemple utiliser le port 8443 mais pas le 443.

Généralités

  • Schéma général d’une connexion sécurisée

Sans titre-20241127-164900.jpg

Création ou renouvellement de l’autorité de certification et du certificat en autosigné

  • Fonctionnement d’une autorité de certification :

Nous allons installer une autorité de certification sur le linux qui va signer le certificat pour le tomcat. Il y aura ainsi une chaîne de certification acceptable par les navigateurs internet modernes. Nous préconisons de mettre la même date d’expiration sur l’autorité de certification et le certificat du tomcat afin qu’il n’y ait pas d’ambiguïté sur le certificat à renouveler.

Aller dans le répertoire où sont stockés les certificats et les clés. Nous les installons généralement dans le répertoire ./devt/certificat de Diapason afin qu’ils soient inclus dans la sauvegarde. Les clés privées sont des données sensibles, des droits restreints sont nécessaire sur ce répertoire pour garantir la sécurité. Le nom du serveur que j’utilise ici dans les différents fichiers de configuration et captures d’écran est vmsaplinux et le répertoire d’installation est /Diap1/START41617/. A modifier en fonction de votre environnement.

CODE
cd /Diap1/START41617/devt/certificat

Le fichier demande.ext déjà présent dans ce répertoire peut vous être utile, ne le supprimez pas.

Génération de la clé privée de l’autorité de certification
CODE
openssl genrsa -aes128 -out vmsaplinuxCA.key

    (remplacer vmsaplinux par le nom du serveur)

Choisir un mot de passe puis le confirmer. Vous devez garder ce mot de passe en lieu sur. Nous en aurons besoin par la suite.

Génération du certificat de l’autorité de certification :
CODE
openssl req -x509 -new -nodes -key vmsaplinuxCA.key -sha256 -days 90 -out vmsaplinuxCA.pem

vmsaplinuxCA.key représente la clé privée créée à l’étape précédente. Mettez le nom que vous avez choisi. Adaptez également vmsaplinuxCA.pem en fonction du nom du serveur.

-days 90 indique le nombre de jours de validité pour le certificat de l’autorité de certification. Choisissez la durée qui vous convient. Par défaut Isia créé un certificat valide 3 mois, vous pouvez ensuite choisir la durée qui vous convient.

  • Mettez-vous un avertissement à minima un mois avant la date de péremption pour le renouvellement.

  • Si vous avez déjà des certificats vous pouvez utiliser les mêmes noms, ils seront écrasés, et ainsi il n’y aura pas de modification à faire au niveau du fichier server.xml sur le tomcat.

Entrer le mot de passe de la clé privée, et répondre aux différentes questions avec vos informations (l’exemple ci-dessous correspond à un environnement interne Isia).

Important :

Renseigner vos informations, pas celles d’Isia.

Pour le ‘common name’ entrer le nom du serveur.

On peut laisser l’adresse mail vide. Elle ne sert pas.

Notre autorité de certification est créée, nous avons le certificat et la clé privée.

Génération de la clé privée pour le tomcat
CODE
openssl genrsa -out vmsaplinux.key 2048

Génération de la demande de certificat pour le tomcat
CODE
openssl req -new -key vmsaplinux.key -out vmsaplinux.csr

vmsaplinux.key représente la clé privée créée à l’étape précédente. Mettez le nom que vous avez choisi. Adaptez également vmsaplinux.csr en fonction du nom du serveur.

Entrer le mot de passe de la clé privée, et répondre aux différentes questions (l’exemple ci-dessous peut être utilisé pour un environnement interne Isia).

Important :

Pour un client entrer les informations du client, pas celles d’Isia !

Pour le ‘common name’ entrer le nom du serveur !

Ne pas entrer de mot de passe dans le champ « A challenge password »

On peut laisser l’adresse mail vide.

Création du fichier .ext pour la signature du certificat

Créer un fichier demande.ext (s’il n’existe pas déjà) avec le contenu suivant (changer dans la dernière ligne vmsaplinux par le nom du serveur sur lequel vous êtes) :

Si le fichier existe déjà et que les informations sont toujours bonnes vous pouvez le réutiliser.

CODE
vim demande.ext
CODE
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = vmsaplinux

En fonction votre infrastructure informatique ce fichier peut être plus complexe. Si en mettant uniquement le nom de la machine on n’accède pas au tomcat c’est que cet ordinateur a un autre nom DNS ou une configuration particulière. On peut également rajouter l’IP. Voici le fichier pour le serveur ISIA srv-licences :

CODE
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = SRV-LICENCES
DNS.2 = SRV-LICENCES.domaine.local
DNS.3 = srv-licences
IP.1 = 192.9.250.26

Pour déterminer les différents éléments à rajouter dans le fichier j’ai fait un ping à partir d’une machine windows. On voit qu’il y a un nom DNS différent : srv-licences.domaine.local. On peut également rajouter l’IP. En cas de changement de ces éléments il faudra renouveler le certificat.

Signature du certificat du tomcat par notre autorité de certification

openssl x509 -req -in vmsaplinux.csr -CA vmsaplinuxCA.pem -CAkey vmsaplinuxCA.key -CAcreateserial -out vmsaplinux.crt -days 90 -sha256 -extfile demande.ext

Modifier les noms en fonction de vos fichiers. Entrer le mot de passe de la clé privée de l’autorité de certification quand c’est demandé.

Nous devons maintenant avoir tous ces fichiers dans le répertoire :

Mise à jour de la configuration des certificats du linux

Copier les certificats dans le répertoire contenant les autorités de certification du linux.

CODE
cp *.key *.pem *.crt /etc/pki/ca-trust/source/anchors/

Mettre à jour la configuration des certificats :

CODE
update-ca-trust

Sécurisation du répertoire et des clés

Les clés privées sont des données sensibles, nous devons nous assurer que les droits soient restreints.

Remonter d’un niveau, et s’assurer que seul l’utilisateur root (ou diapdba) y a accès.

CODE
cd ..
chown -R root:root certificat
chmod -R 700 certificat

Paramétrage du tomcat

Éditer le fichier server.xml d’apache pour mettre à jour les noms des certificats et des clés si besoin.

CODE
cd /Outils/apache-tomcat-9.0.45/conf
vim server.xml

Vérifier ce paragraphe :

Si vous avez repris les mêmes noms il n’y a rien à modifier. Sinon changez les noms de certificat et de clé.

CODE
<Connector
   protocol="org.apache.coyote.http11.Http11AprProtocol"
   port="8443" maxThreads="200"
   maxParameterCount="1000"
   scheme="https" secure="true" SSLEnabled="true"
   SSLCertificateFile="/Diap1/START41617/devt/certificat/vmsaplinux.crt"
   SSLCertificateKeyFile="/Diap1/START41617/devt/certificat/vmsaplinux.key"
   SSLVerifyClient="optional" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2" />

Important : les lignes SSLCertificateFile et SSLCertificateKeyFile sont à adapter en fonction de vos répertoires et noms de certificat et de clé !

Redémarrer le tomcat

CODE
/Outils/apache-tomcat-9.0.45/stoptomcat.sh
CODE
/Outils/apache-tomcat-9.0.45/starttomcat.sh

Vérification du fonctionnement

Vérification directe sur le linux

Dans le cas (très rare) où on peut avoir un navigateur web sur le linux, accéder à l’URL du tomcat de votre serveur. Dans mon cas :

https://vmsaplinux:8443/

Dans cet exemple j’ai configuré le https sur le port 8443, il faut le spécifier dans l’URL. Si vous avez pris un autre port il faut l’indiquer dans l’URL. Par exemple pour le port 8444 : https://vmsaplinux:8444/

Voici un exemple avec un tomcat en https, la chaine de certificat est correcte :

image-20241127-162119.png

  • Vérification sur une autre machine

Dans la plupart des cas nous n’avons pas de navigateur web sur le linux. Il faut alors vérifier le fonctionnement sur une machine windows, le TSE généralement. Il va être nécessaire d’importer le certificat de l’autorité de certification.

Attention cette procédure doit être suivie même si vous avez créé des certificats avec les mêmes noms que les anciens !

 Première étape, récupérer le certificat de l’autorité de certification (dans mon cas vmsaplinuxCA.pem) avec filezilla ou winscp par exemple.

 

  • Sur Chrome, Edge ou encore Brave (pour firefox voir plus bas) :

Nous devons rajouter notre certificat dans les autorités de certification de l’ordinateur.

Cliquer sur le bouton démarrer, taper certi et cliquer sur Gérer les certificats d’ordinateur.

Faire un clic droit sur Autorités de certification racines de confiance, Toutes les tâches, Importer.

Cliquer sur Suivant

Cliquer sur Parcourir, aller dans le répertoire où vous avez copié le certificat. Dans la liste déroulante en bas à droite sélectionner Tous les fichiers. Sélectionner le certificat et cliquer sur Ouvrir.

Cliquer sur Suivant

Bien vérifier que le certificat est placé dans le magasin Autorités de certification racine de confiance (sinon modifier le magasin en cliquant sur Parcourir…)

Cliquer sur Terminer

Cliquer sur OK

On peut maintenant tester notre tomcat sur chrome, edge ou brave :

image-20241127-162222.png

  • Installation du certificat de l’autorité de certification sur firefox

Firefox gère les certificats différemment. Si c’est le seul navigateur internet disponible voici les manipulations :

Lancer Firefox, cliquer sur le bouton en haut à droite puis sur Paramètres

Cliquer sur Vie privée et sécurité

 

Cliquer sur Afficher les certificats.

Cliquer sur Importer

Récupérer le bon certificat et cliquer sur Ouvrir

Cocher Confirmer cette AC pour identifier des sites web et cliquer sur OK.

Entrer l’URL du Tomcat en https. La connexion est sécurisée.

image-20241127-162236.png

 

Installation d’un certificat acheté auprès d’un fournisseur

Le client a acheté un certificat pour son nom de domaine auprès d’un fournisseur du commerce.

Modifier le fichier /etc/hosts et rajouter le nom souhaité avec un des noms de domaine inclus dans le certificat. Dans l’exemple ci-dessous on configure le serveur srv-licences avec le certificat isia.fr

CODE
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.9.250.26    SRV-LICENCES srv-licences.isia.fr

Copier le certificat et sa clé dans un répertoire sécurisé sur le serveur (par exemple dans le répertoire ./devt/certificat en s’assurant que le répertoire certificat soit configuré en 700 et accessible uniquement à l’utilisateur root (ou diapdba). Aller dans le répertoire certificat (ou celui que vous avez choisi) et taper les commandes suivantes :

CODE
cd ..
chown -R root :root certificat
chmod -R 700 certificat

Le client doit faire le nécessaire au niveau de sa configuration DNS pour que le serveur soit accessible avec le bon nom de domaine.

Modifier le fichier server.xml (exemple avec le certificat et sa clé dans le répertoire /root)

CODE
<Connector
   protocol="org.apache.coyote.http11.Http11AprProtocol"
   port="8443" maxThreads="200"
   maxParameterCount="1000"
   scheme="https" secure="true" SSLEnabled="true"
   SSLCertificateFile="/root/STAR_isia_fr.crt"
   SSLCertificateKeyFile="/root/new_private_2023.key"
   SSLVerifyClient="optional" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2" />

Mettre à jour les certificats de racine du linux. Taper la commande suivante :

NONE
update-ca-trust

Redémarrer le tomcat.

Le tomcat doit être immédiatement accessible en https.

Si ce n’est pas le cas il faut essayer de copier sur le linux dans le répertoire /etc/pki/ca-trust/source/anchors/ tous les certificats de la chaîne de certification (autorité racine de confiance et éventuellement autorité intermédiaire et refaire un update-ca-trust)

Modification du diapason.ini

Editer le fichier diapason.ini de l’environnement.

Remplacer la ligne

DIAP_TOMCAT_URL_LOC http://urlduserveur:8080

CODE
DIAP_TOMCAT_URL_LOC   http://vmsaplinux:8080

par

DIAP_TOMCAT_URL_LOC https://urlduserveur:port

Il faut rajouter :numéroduport après le nom du serveur. Exemple pour le port 8443 :

DIAP_TOMCAT_URL_LOC https://urlduserveur:8443

CODE
DIAP_TOMCAT_URL_LOC   https://vmsaplinux:8443
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.