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

Il va falloir créer un keystore. C'est un conteneur sécurisé, un fichier jks, qui doit héberger la clé privée de votre site ainsi que les certificats publiques de votre autorité 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 publique, le .crt ou .cer, contient également les certificats publiques de l'autorité de certification, mais il faudra tout de même les importer à part.

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

Donc 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

Notez qu'une fois j'ai vu la déclaration d'un pfx sous cette forme, si cela fonctionne cela va éviter d'utilise le keestore, cela sera beaucoup plus simple :

<Connector port="8443"
maxHttpHeaderSize="65536"
sslProtocol="TLS"
URIEncoding="UTF-8"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="false"
keystoreFile="D:\mescertificats.pfx"
keystorePass="blablabla"
keystoreType="PKCS12"
/>
Lien vers le fichier : cliquez ici Copier le code

Article(s) en relation(s)

2