Einrichtung des HTTPS-Connectors im Tomcat10-Server - Debian 12.x

 

Dieser Artikel beschreibt, wie die SSL-Verschlüsselung für die Verbindung der Browser-Clients zum Tomcat-Server eingerichtet werden kann. Der hier beschriebene Ansatz kommt dabei mit den "Bordmitteln" des Tomcats aus und setzt keine weiteren Server-Dienste (z.B. vorgeschalteten Apache-HTTPd-Server als "Reverse Proxy") voraus.

Lösungsansatz

  • Benötigt werden ein asymmetrisches Schlüsselpaar (z.B. gemäß RSA-Cipher-Suite) sowie ein Zertifikat zur Bestätigung der Authentizität des Inhabers des öffentlichen Schlüssels. Diese Informationen können z.B. als "PKCS#12"-Datei oder im Apache-PEM-Format  zur Verfügung gestellt werden. Die u.g. Anleitung geht davon aus, dass die Dateien im PEM-Format vorliegen und zunächst ins PKCS#12-Format umgewandelt werden müssen. Liegt direkt eine PKCS#12-Datei vor, kann dieser Schritt entfallen.

  • Zertifikat und zugehöriges Schlüsselpaar werden in einem Java-Keystore installiert (mittels des CLI-Tools „keytool“ aus dem JDK)

  • Im SSL-Connector des Tomcats (wird definiert in der Datei "server.xml" aus dem Tomcat-Konfigurationsverzeichnisses) wird der o.g. Keystore (per Pfadangabe) und das konkrete Zertifikat (per Alias) referenziert.

Original-Dokumentation der Hersteller

Vorgehen zur Erstellung der Keystore-Einträge

PKCS#12-Dateien mittels OpenSSL erstellen / konvertieren (Umwandlung von PEM-Zertifikat und privaten Schlüssel ins „PKCS#12“-Format):

openssl pkcs12 -export -out certificate.p12 -inkey privateKey.key -in certificate.crt -certfile CACert.crt

Achtung: Bei diesem Schritt sollte ein Passwort zur Verschlüsselung der PKCS#12-Datei vergeben werden (wird im folgenden Schritt wieder benötigt).

PKCS#12-Datei in einen Keystore im Format „JKS“ (Java Keystore) importieren

keytool -importkeystore -srckeystore certificate.p12 -srcstoretype pkcs12 -destkeystore tomcatKeystore.jks -deststoretype JKS

Achtung: Damit der Tomcat-Server später den privaten Schlüssel aus dem Keystore auslesen kann, ist es wichtig, dass das Passwort zur Absicherung des privaten Schlüssels (wird beim Import aus der PKCS#12"-Datei automatisch gesetzt) sowie das Keystore-Passwort (kann während des Import-Vorgangs manuell gesetzt werden) identisch sind. Ist diese Bedingung nicht erfüllt, so kommt es beim Start des Tomcat-Servers zu einem Fehler und es wird eine Meldung wie "java.security.UnrecoverableKeyException: Cannot recover key" ausgegeben. Um die Übereinstimmung der Passwörter nachträglich herzustellen, kann der folgende "keytool"-Befehl genutzt werden. Dieser ändert das Key-Passwort des Keys mit dem Alias "1" aus dem Keystore "picture.jks" (wird durch das Keystore-Passwort "plattform42" geschützt) vom Wert "picture42" auf "plattform42".

keytool -keypasswd -new plattform42 -keystore tomcatKeystore.jks -storepass plattform42 -alias 1 -keypass picture42

Einrichtung des Tomcat-SSL-Connectors

Nach Vorbereitung des Keystores kann der HTTPS-Connector in der Konfigurationsdatei „server.xml“ des Tomcat-Servers aktiviert werden. Das folgende Beispiel zeigt einen entsprechenden Auszug aus dieser Datei: