Mit Hilfe von letsencrpyt und StartSSL ist es mittlerweile auf einfache Art und Weise möglich einen Webserver (sei er nun mit Apache, Nginx oder anderen Softwareprodukten betrieben) abzusichern. Beim Java-Servlet-Container Tomcat ist es aber notwendig, die beteiligten Zertifikate in einen Java Keystore zu packen. Wie das geht erklären die nächsten paar Zeilen…
Am einfachsten kann der benötigte JavaKeystore (JKS-Datei) aus den zertifikaten erstellt werden, wann zuerst ein PKCS12 Keystore erstellt wird, der dann wieder in einen JKS gewandelt wird. Dazu sind zwei Befehle notwendig.
- Wandlung der Zertifikate mit OpenSSL in einen PKCS12 Store:
openssl pkcs12 \ -export \ -in server.crt \ -inkey server.key \ -out server.p12 \ -name [some-alias] \ -CAfile ca.crt \ -caname root \ -chainDabei ist darauf zu achten, dass ein Passwort vergeben wird. Ohne bzw. mit einem leeren Passwort, bekommt man beim Wandeln in einen JKS eine Fehlermeldung.
- Wandlung in einen Java Keystore:
keytool -importkeystore \ -deststorepass [changeit] \ -destkeypass [changeit] \ -destkeystore tomcat.jks \ -srckeystore server.p12 \ -srcstoretype PKCS12 \ -srcstorepass some-password \ -alias [some-alias]
Das sollte auch schon alles gewesen sein :-)
Soll der keystore jetzt noch im Tomcat verwendet werden, muss folgendes in die <tomcat-dir>/conf/server.xml eingetragen werden:
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="<pfad-zu-tomcat.jks>" keystorePass="changeit" clientAuth="false" sslProtocol="TLS"/>