Apache Tomcat und HTTPS

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.

  1. 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 \
            -chain

    Dabei ist darauf zu achten, dass ein Passwort vergeben wird. Ohne bzw. mit einem leeren Passwort, bekommt man beim Wandeln in einen JKS eine Fehlermeldung.

  2. 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"/>

 

Schreibe einen Kommentar