Installer un certificat Tomcat
Note préalable: les instructions ci-dessous sont applicables si votre Tomcat est compilé avec JSSE. Les versions récentes de Tomcat peuvent utiliser la librairie Apache APR: dans ce cas, il faut suivre les instructions pour Apache Installer un certificat Apache . Pour savoir si vous utilisez APR, recherchez sous Windows la dll "TOMCAT/bin/tcnative-1.dll"; sous Linux les librairies "libtcnative-1.so.0.1.12" et "libapr-1.so.0.3.3" dans "TOMCAT/native/lib". Si oui, alors APR est disponible.
1- Récupérez le certificat sur votre serveur
Téléchargez le fichier global (.p7b) indiqué dans l'email de livraison sur votre serveur.
2- Importez le certificat
Pour installer votre certificat dans votre keystore:
- Placez vous sur la machine sur laquelle vous avez fait la demande, et dans le même répertoire.
- Importez le certificat:
keytool -import -alias [nom-alias, en général "tomcat"] -file [p7-0000000000-0000.p7b] -keystore [nomdustockage]
Il est important que vous spécifiez bien le même nom d'alias que lors de votre demande de certificat, et en utilisant le même nom de stockage.
Un message d'avertissement vous signalera que le certificat ne peut être vérifier. Acceptez l'import malgré cela et votre keystore sera utilisable et ne contiendra pas la racine.
Un paramètre "-trustcacerts" existe et est parfois recommandé pour l'import. Il est à noter que celui-ci importera la racine dans le keystore. Cela peut poser des problèmes de chaines de certification.
3- Activer le SSL
Editez le fichier server.xml de votre serveur. Localisez la section en commentaire de votre fichier et complétez la section concernée comme ci-dessous:
Avec Tomcat 4
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8443" minProcessors="5" maxProcessors="75" enableLookups="false" acceptCount="10" connectionTimeout="60000" debug="0" scheme="https" secure="true"> <Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory" clientAuth="false" protocol="TLS" keystoreFile="CHEMIN-COMPLET+NOMDUSTOCKAGE" keystorePass="MOT-DE-PASSE-DU-KEYSTORE" /> </Connector>
Avec Tomcat 5
<Connector className="org.apache.coyote.tomcat5.CoyoteConnector" port="8443" minProcessors="5" maxProcessors="75" enableLookups="true" disableUploadTimeout="true" acceptCount="100" debug="0" scheme="https" secure="true"; clientAuth="false" sslProtocol="TLS" keystoreFile="CHEMIN-COMPLET+NOMDUSTOCKAGE" keystorePass="MOT-DE-PASSE-DU-KEYSTORE" />
Avec Tomcat 6 à 9
<Connector protocol="org.apache.coyote.http11.Http11Protocol" port="8443" minProcessors="5" maxProcessors="75" enableLookups="true" disableUploadTimeout="true" acceptCount="100" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="CHEMIN-COMPLET+NOMDUSTOCKAGE" keystorePass="MOT-DE-PASSE-DU-KEYSTORE" />
Avec Tomcat en mode APR / Apache
<Connector protocol="org.apache.coyote.http11.Http11AprProtocol" SSLCertificateFile="${catalina.base}/conf/localhost.crt" SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" SSLCertificateChainFile="${catalina.base}/conf/chain-localhost.txt" />
Avec Tomcat avec un PKCS12
Cette fonctionnalité est disponible à partir de Tomcat 5.5.
Si vous générez un pkcs12 (.pfx) depuis un serveur Microsoft, vous pouvez l'utiliser dans votre Tomcat ainsi:
<Connector port="8443" minProcessors="5" maxProcessors="75" enableLookups="true" disableUploadTimeout="true" acceptCount="100" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="CHEMIN-COMPLET+NOMDUPFX" keystorePass="MOT-DE-PASSE-DU-PFX" keystoreType="PKCS12" />
Désactiver SSLv2/SSLv3 sur Tomcat
<Connector SSLProtocol="TLSv1+TLSv1.1+TLSv1.2" />
Ou pour de plus anciennes versions de JDK : <Connector SSLProtocol="TLSv1,TLSv1.1,TLSv1.2" /> Il peut être egalement possible d'utiliser la syntaxe suivante : <Connector sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1" /> Ou pour les versions très anciennes de tomcat 6 : <Connector sslProtocol="TLS" protocols="TLSv1.2,TLSv1.1,TLSv1" />
Améliorer la qualité des ciphers utilisés
Pour plus de sécurité nous vous recommandons une suite de ciphers afin de chiffrer plus efficacement vos communications tout en gardant une haute compatibilité avec les navigateurs. Pour cela, ajoutez le configration suivante à votre connecteur:
<Connector ciphers="TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" />
4- Testez
Testez maintenant l'accès à votre site sécurisé avec IE 6 et Firefox.
Vous pouvez aussi utiliser notre outil de test CoPiBot disponible sur le page statut de votre certificat,
en cliquant sur le bouton "Vérifier votre certificat".
Erreurs fréquentes
- java.lang.Exception: L'entrée n'est pas un certificat X.509
- Votre site présente des problèmes de compatibilité car des éléments de la chaine de certification sont manquants
Documentation interne
- Keytool
- Fabriquer un JKS (Java, Tomcat, ...) à partir d'un PKCS12 ou PFX (Windows)
- Fabriquer un PKCS12 (PFX / P12) à partir d'un JKS / keystore JAVA
- Ajouter un certificat intermédiaire à un keystore
- Supprimer un certificat d'un keystore avec keytool