Tomcat (SSL)

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Sujet Configuration SSL/TLS de Tomcat
Voir aussi Tomcat · Tomcat (sécurisation)

Configuration du chiffrement SSL/TLS sur une instance Tomcat : import d'un certificat dans un keystore et exposition sur le port 443.

Importer un certificat depuis un PKCS12

openssl s_client -connect exemple.tld:443

keytool -importkeystore \
  -deststorepass changeit -destkeypass changeit \
  -destkeystore MyDSKeyStore.jks \
  -srckeystore /root/certificat.pfx -srcstoretype PKCS12 \
  -srcstorepass <mot_de_passe_certificat>

keytool -list -keystore MyDSKeyStore.jks

Connecteur HTTPS dans conf/server.xml :

<Connector port="8443" maxThreads="150" scheme="https" secure="true" SSLEnabled="true"
           proxyPort="443"
           keystoreFile="/opt/tomcat/MyDSKeyStore.jks"
           keystorePass="changeit"
           clientAuth="false" keyAlias="tomcat" sslProtocol="TLS" />

Chaîne complète depuis des PEM

openssl pkcs12 -export -in $certdir/fullchain.pem -inkey $certdir/privkey.pem \
  -out $certdir/cert_and_key.p12 -name tomcat \
  -CAfile $certdir/chain.pem -caname root -password pass:<motdepasse>

keytool -importkeystore -srcstorepass <motdepasse> \
  -deststorepass changeit -destkeypass changeit \
  -srckeystore $certdir/cert_and_key.p12 -srcstoretype PKCS12 \
  -alias tomcat -keystore $keystoredir

keytool -import -trustcacerts -alias root -deststorepass changeit \
  -file $certdir/chain.pem -noprompt -keystore $keystoredir

Rediriger le port 443 vers 8443

Tomcat tourne sous un utilisateur non-root et ne peut lier un port inférieur à 1024. On redirige donc.

Par iptables :

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443

Par xinetd :

yum install xinetd
chkconfig --add xinetd
# /etc/xinetd.d/tomcat
service tomcat-https
{
    disable       = no
    flags         = REUSE
    wait          = no
    user          = root
    socket_type   = stream
    protocol      = tcp
    port          = 443
    redirect      = localhost 8443
    log_on_success -= PID HOST DURATION EXIT
}
service xinetd start

Voir aussi