bg-tutorials

So installiert man ein SSL-Zertifikat in Tomcat

In diesem Tutorial erfahren Sie, wie Sie ein SSL-Zertifikat auf Apache Tomcat installieren, indem Sie das Java-Tool keytool verwenden und anschließend den HTTPS-Connector in server.xml konfigurieren. Falls Sie Ihren CSR noch nicht erstellt haben, zeigt Ihnen der erste Abschnitt, wie das geht.

Wir haben außerdem ein Video aufgenommen, das Sie durch den gesamten Prozess führt. Sie können sich das Video ansehen, die Anleitung lesen oder beides tun. Das Video finden Sie unten.

Einen CSR-Code für Tomcat erstellen

CSR steht für Certificate Signing Request, einen Textblock mit den aktuellen Angaben zu Ihrer Domain und Ihrem Unternehmen. Jeder Käufer eines kommerziellen SSL-Zertifikats muss einen CSR bei der Zertifizierungsstelle (dem SSL-Anbieter) einreichen, um die Validierung zu bestehen und das Zertifikat zu erhalten. Enthält der CSR fehlerhafte Angaben, signiert die CA ihn nicht.

Auf Tomcat wird der CSR mit keytool aus einem Java-Keystore erstellt, und genau dieser Keystore enthält den privaten Schlüssel, den Sie später bei der Installation wiederverwenden. Sie haben zwei Möglichkeiten:

Wichtig: Notieren Sie sich die Keystore-Datei und den Alias, den Sie bei der Erstellung des CSR verwendet haben. Sie werden Ihr signiertes Zertifikat später genau in diesen Alias importieren, da sich dort der zugehörige private Schlüssel befindet.

Nachdem die Zertifizierungsstelle Ihre Anfrage validiert und Ihnen die SSL-Dateien zugesendet hat, fahren Sie mit der unten beschriebenen Installation fort.

SSL-Zertifikat in Tomcat installieren

Eine Tomcat-Installation besteht aus zwei Schritten: Zuerst importieren Sie die Zertifikatskette und Ihr signiertes Zertifikat in den Keystore, der bereits Ihren privaten Schlüssel enthält, anschließend konfigurieren Sie den HTTPS-Connector in server.xml, damit er diesen Keystore verwendet.

Schritt 1: SSL-Zertifikatsdateien vorbereiten

Ihre Zertifizierungsstelle sendet die Dateien per E-Mail an die von Ihnen angegebene Adresse, meist als ZIP-Archiv. Entpacken Sie es. Je nach CA erhalten Sie die Dateien in einem von zwei Formaten:

  • PKCS#7: eine einzelne .p7b-Datei (oder .cer), die Ihr Zertifikat bereits zusammen mit dem Stammzertifikat und den Zwischenzertifikaten enthält.
  • PEM: separate Dateien, typischerweise eine .crt-Datei für Ihr Serverzertifikat sowie einzelne root.crt– und intermediate.crt-Dateien.

Laden Sie die entpackten Dateien auf den Server hoch, in dasselbe Verzeichnis wie den Keystore, aus dem Sie Ihren CSR erstellt haben (im Folgenden als example.jks bezeichnet). Ermitteln Sie Ihr Format und folgen Sie der entsprechenden Anleitung.

Schritt 2: Zertifikat in Ihren Keystore importieren

PKCS#7-Format. Da eine .p7b-Datei bereits die vollständige Kette enthält, importiert ein einziger Befehl alles auf einmal in Ihren bestehenden Alias mit dem privaten Schlüssel:

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.p7b

Ersetzen Sie ssldragon durch Ihren eigenen Alias und example durch Ihre Dateinamen. Der Alias muss derjenige sein, der bereits Ihren privaten Schlüssel enthält (der Alias aus dem CSR-Schritt). Wenn die Meldung Certificate reply was installed in keystore erscheint, war der Import erfolgreich. Überprüfen Sie den Inhalt des Keystores mit:

keytool -list -v -keystore example.jks

Suchen Sie nach einem Eintrag vom Typ PrivateKeyEntry mit einer Zertifikatsketten-Länge größer als 1. Das bestätigt, dass das signierte Zertifikat nun an Ihren privaten Schlüssel angehängt ist.

PEM-Format. Importieren Sie die Zertifikate einzeln, in der Reihenfolge der Kette: zuerst das Stammzertifikat, dann eventuelle Zwischenzertifikate und zuletzt Ihr Domain-Zertifikat. Wird die Kette zuerst importiert, kann keytool einen vollständigen Vertrauenspfad aufbauen, bevor die Antwort an Ihren Schlüssel angehängt wird. Importieren Sie das Stammzertifikat:

keytool -import -trustcacerts -alias root -keystore example.jks -file root.crt

Importieren Sie dann das Zwischenzertifikat:

keytool -import -trustcacerts -alias intermediate -keystore example.jks -file intermediate.crt

Wenn Ihre CA mehrere Zwischenzertifikate liefert, importieren Sie jedes einzeln unter einem eigenen vertrauenswürdigen Alias, in der Reihenfolge, in der sie sich gegenseitig signieren (vom Stammzertifikat abwärts bis zu Ihrem Domain-Zertifikat). Ein Zertifikat von Sectigo PositiveSSL wird beispielsweise mit mehr als einem Zwischenzertifikat ausgeliefert, importieren Sie diese also nacheinander vor dem Domain-Zertifikat.

Importieren Sie zuletzt Ihr primäres Zertifikat (das für Ihre Domain ausgestellte) in den bestehenden Alias mit dem privaten Schlüssel, denselben Alias, den Sie bei der Erstellung des CSR verwendet haben:

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.crt

Hier muss ssldragon Ihr bestehender Alias mit dem privaten Schlüssel sein. Da dieser Alias bereits einen Schlüssel besitzt, behandelt keytool diesen Import als Zertifikatsantwort und verknüpft das signierte Zertifikat mit dem Schlüssel. Dieser Schritt ist es, der HTTPS zum Funktionieren bringt.

Kritische Fehlerquelle: Importieren Sie das signierte Zertifikat nicht unter einem neuen Alias. Wenn der Alias keinen bestehenden privaten Schlüssel besitzt, speichert keytool das Zertifikat als eigenständigen vertrauenswürdigen Eintrag ohne zugehörigen Schlüssel, und TLS wird fehlschlagen. Falls Sie nicht sicher sind, welcher Alias Ihren Schlüssel enthält, führen Sie keytool -list -v -keystore example.jks aus und verwenden Sie den Alias, dessen Typ PrivateKeyEntry lautet.

Schritt 3: HTTPS-Connector in server.xml konfigurieren

Nachdem sich das Zertifikat in Ihrem Keystore befindet, verweisen Sie den HTTPS-Connector von Tomcat darauf. Der Connector wird in server.xml definiert, die sich im Ordner conf Ihrer Tomcat-Installation befindet (zum Beispiel $CATALINA_HOME/conf/server.xml). Öffnen Sie die Datei in einem Texteditor.

Bei aktuellen Tomcat-Versionen (9, 10 und 11) verwendet die empfohlene Form ein verschachteltes SSLHostConfig-Element, das wiederum ein Certificate-Element enthält, welches auf Ihren Keystore verweist. Fügen Sie den sicheren Connector wie folgt hinzu oder aktualisieren Sie ihn entsprechend:

<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true"
    scheme="https"
    secure="true">
  <SSLHostConfig>
    <Certificate
        certificateKeystoreFile="/your_path/example.jks"
        certificateKeystorePassword="your_keystore_password"
        certificateKeystoreType="JKS"
        certificateKeyAlias="ssldragon"
        type="RSA" />
  </SSLHostConfig>
</Connector>
  • certificateKeystoreFile: der vollständige Pfad zu Ihrer Keystore-Datei.
  • certificateKeystorePassword: das Keystore-Passwort.
  • certificateKeystoreType: JKS für einen .jks-Keystore oder PKCS12 für einen .p12- bzw. .pfx-Keystore.
  • certificateKeyAlias: der Alias, der Ihren privaten Schlüssel und das signierte Zertifikat enthält (hier ssldragon). Damit weiß Tomcat, welchen Eintrag es verwenden soll, wenn der Keystore mehrere enthält.

Hinweis: Port 443 ist der oben verwendete Standard-HTTPS-Port; die Beispielkonfigurationen von Tomcat verwenden standardmäßig 8443, verwenden Sie also den Port, den Ihre Umgebung erwartet. Wenn dies Ihre erste HTTPS-Einrichtung ist, kann der sichere Connector in server.xml auskommentiert sein. Entfernen Sie die umgebenden Kommentarmarkierungen, damit der Connector aktiv ist, und stellen Sie sicher, dass kein anderer Connector bereits an denselben Port gebunden ist.

Ältere Form (ältere Tomcat-Versionen). Ältere Anleitungen platzieren die Keystore-Details direkt am Connector als Attribute keystoreFile und keystorePass. Dieser Stil wurde durch die oben gezeigten Elemente SSLHostConfig und Certificate abgelöst, die auf unterstützten Tomcat-Versionen die zu verwendende Form sind.

Schritt 4: server.xml speichern und Tomcat neu starten

Speichern Sie server.xml und starten Sie Tomcat neu, damit die Konfiguration neu geladen wird. Unter Linux verwenden Sie die mitgelieferten Skripte:

$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

Wenn Tomcat als Dienst läuft, starten Sie ihn stattdessen über Ihren Dienstmanager neu (zum Beispiel systemctl restart tomcat unter Linux oder über die Dienste-Konsole unter Windows). Herzlichen Glückwunsch, Ihr SSL-Zertifikat ist nun auf Ihrem Tomcat-Server installiert.

Ihre Tomcat-SSL-Installation testen

Nach der Installation des Zertifikats können sich kleine Fehler unbemerkt einschleichen und beeinflussen, wie Browser Ihre Website behandeln. Machen Sie es sich zur Gewohnheit, die Installation zu überprüfen. Führen Sie unseren SSL Checker aus für einen sofortigen Scan, der Probleme wie ein fehlendes Zwischenzertifikat oder eine nicht vertrauenswürdige Kette aufdeckt.

Häufig gestellte Fragen

Warum funktioniert mein Tomcat-SSL-Zertifikat nach dem Import nicht?

Die übliche Ursache ist der Import des signierten Zertifikats unter einem neuen Alias statt unter dem Alias, der bereits Ihren privaten Schlüssel enthält. keytool speichert es dann als vertrauenswürdigen Zertifikatseintrag ohne Schlüssel, sodass Tomcat den TLS-Handshake nicht abschließen kann. Importieren Sie die signierte Antwort erneut in den bestehenden Alias mit dem privaten Schlüssel (denjenigen aus Ihrem CSR). Überprüfen Sie den Erfolg, indem Sie keytool -list -v -keystore example.jks ausführen und prüfen, ob der Alias als PrivateKeyEntry mit einer Kette von mehr als einem Zertifikat angezeigt wird.

Importiere ich zuerst die Zertifikatskette oder mein Domain-Zertifikat?

Importieren Sie zuerst die Kette. Fügen Sie das Stammzertifikat und eventuelle Zwischenzertifikate der Reihe nach als vertrauenswürdige Einträge hinzu, und importieren Sie zuletzt Ihr Domain-Zertifikat in den Alias mit dem privaten Schlüssel. So kann keytool einen vollständigen Vertrauenspfad aufbauen, bevor die Antwort an Ihren Schlüssel angehängt wird. Bei einer PKCS#7-Datei (.p7b) ist die Kette bereits gebündelt, sodass ein einziger Import alles erledigt.

Wo befindet sich die SSL-Konfigurationsdatei von Tomcat?

Der HTTPS-Connector wird in server.xml im Verzeichnis conf Ihrer Tomcat-Installation definiert (zum Beispiel $CATALINA_HOME/conf/server.xml). Bei aktuellen Tomcat-Versionen wird der Keystore über ein verschachteltes SSLHostConfig– und Certificate-Element referenziert, nicht direkt am Connector.

Kann ich anstelle von JKS einen PKCS12-Keystore auf Tomcat verwenden?

Ja. Tomcat unterstützt beide Formate. Setzen Sie certificateKeystoreType auf PKCS12 für einen .p12- oder .pfx-Keystore, oder auf JKS für einen .jks-Keystore, und verweisen Sie mit certificateKeystoreFile auf die entsprechende Datei. PKCS12 ist das standardisierte, portable Keystore-Format und daher eine gute Standardwahl für neue Keystores.

Welchen Port verwendet Tomcat für HTTPS?

Die Beispielkonfiguration von Tomcat verwendet Port 8443 für den sicheren Connector. Um HTTPS über den Standardport bereitzustellen, den Browser standardmäßig verwenden, setzen Sie den Connector-port auf 443 und stellen Sie sicher, dass kein anderer Connector oder Dienst diesen Port bereits belegt.

Wie starte ich Tomcat nach Änderung der SSL-Konfiguration neu?

Führen Sie die mitgelieferten Skripte $CATALINA_HOME/bin/shutdown.sh und anschließend $CATALINA_HOME/bin/startup.sh aus, oder starten Sie den Tomcat-Dienst über Ihren Dienstmanager neu (zum Beispiel systemctl restart tomcat unter Linux oder über die Dienste-Konsole unter Windows). Ein Neustart ist erforderlich, damit Änderungen an server.xml wirksam werden.

Sparen Sie 10% auf SSL-Zertifikate, wenn Sie noch heute bestellen!

Schnelle Ausstellung, starke Verschlüsselung, 99,99% Browser-Vertrauen, engagierter Support und 25-tägige Geld-zurück-Garantie. Gutscheincode: SAVE10

A detailed image of a dragon in flight
Geschrieben von

Erfahrener Content-Autor, spezialisiert auf SSL-Zertifikate. Verwandeln Sie komplexe Cybersicherheitsthemen in klare, ansprechende Inhalte. Tragen Sie durch wirkungsvolle Narrative zur Verbesserung der digitalen Sicherheit bei.