TUTOS.EU

Passer un site tomcat en HTTPS

La technique officielle est donnée sur
https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html#Prepare_the_Certificate_Keystore

Mais si on ne me l'avait pas expliqué que j'aurais certainement abandonné.

Pour commencer, il vous faut accéder à la commande keytool
si vous ne savez pas où est keytool.exe, il faut le chercher.

Pour chercher sur le disque D en powershell, vous pouvez utiliser cette commande

Get-ChildItem -Path "D:\" -Recurse -include "*keytool.exe*" | %{Write-host $_.FullName}
Lien vers le fichier : cliquez ici Copier le code

Sous Linux la commande pour chercher sera du type

find / -name keytool
Lien vers le fichier : cliquez ici Copier le code

Quand vous l'aurez trouvé, aller dans le répertoire qui le contient.
La commande keytool doit afficher ceci

La technique indiquée dans la doc utilise un keystore au format jks. C'est un conteneur sécurisé, un fichier peut stocker plusieurs clés privées, des certificats publics ainsi que les certificats publics d'autorités de certification.

On peut créer le keystore simplement en important le .pfx de votre site tomcat. Le fichier .pfx contient la clé publique et privée de votre site. On a vu dans l'article https://www.tutos.eu/9617 comment le faire.

Notez que le certificat public, le .crt ou .cer, n'inclut pas nécessairement les certificats publics de l'autorité de certification.
 

Il faudra injecter dans le keystore les certificats publics de l'autorité de certification. Voici à quoi il ressemblent :

Pour créer un fichier .pfx à partir de la clé publique et privée, on peut adapter cette commande openssl

openssl.exe pkcs12 -export -in nommachine.cer -inkey nommachine.key -out nommachine.pfx
Lien vers le fichier : cliquez ici Copier le code

Quand vous avez le .pfx de votre site tomcat, pour créer le keystore, adaptez cette commande. Elle vous demandera par la suite le mot du passe du fichier .pfx
Vous définissez en même temps le mot de passe du keystore. Il faut prendre soin de le noter et de le sécuriser dans un keepass par exemple.

keytool -importkeystore -deststorepass motdepassedukeystore -destkeystore D:\keystore.jks -srckeystore D:\moncertificat.pfx -srcstoretype PKCS12
Lien vers le fichier : cliquez ici Copier le code

Ajouter ensuite dans le keystore les certificats publiques de votre autorité de certification

keytool -import -alias rootca -keystore D:\keystore.jks -trustcacerts -file "D:\rootca.cer" -storepass motdepassedukeystore 

keytool -import -alias subca -keystore D:\keystore.jkss -trustcacerts -file "D:\subca.cer" -storepass motdepassedukeystore
Lien vers le fichier : cliquez ici Copier le code

Pour voir ce que contient votre keystore, cad les certificats publiques et la clé privée, vous pouvez utiliser cette commande

keytool -list -v -keystore D:\keystore.jks
Lien vers le fichier : cliquez ici Copier le code

Pour effacer si nécessaire un certificat du keystore, on le désigne par son alias en utilisant cette commande

keytool -delete -alias alias_a_effacer -keystore D:\keystore.jks
Lien vers le fichier : cliquez ici Copier le code

Maintenant que l'on a créé le keystore et qu'on y a placé le certificat du site tomcat avec les certificats publiques de votre autorité de certification, il faut déclarer ce keystore.jks dans le fichier de configuration de tomcat,
cad dans server.xml

Indiquez l'emplacement du keystore avec son mot de passe ainsi que celui du pfx en adaptant ce bloc :

<Connector
	   connectionTimeout="20000"
	   port="8443"
	   protocol="HTTP/1.1" SSLEnabled="true" scheme="https"
	   keystoreFile="conf/keystore.jks"
	   keystorePass="motdepassedukeystore"
	   keyPass="motdepassedu_pfx"
	   clientAuth="false" sslProtocol="TLS"
   />
Lien vers le fichier : cliquez ici Copier le code

On peut aussi mettre en place une redirection du http vers le https avec ce bloc :

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Lien vers le fichier : cliquez ici Copier le code

J'ai appris plus tard qu'on pouvait se passe d'un keystore et pointer directement sur un fichier pfx.

Exemple :

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150" SSLEnabled="true" maxHttpHeaderSize="65536" URIEncoding="UTF-8"
    scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
    keystoreType="PKCS12"
    keystoreFile="/opt/tomcat/conf/monfichier.pfx"
    keystorePass="lemotdepasse" />



Lien vers le fichier : cliquez ici Copier le code

Article(s) en relation(s)

2