Wie implementiert man SSL in Apache Tomcat?

Eine detaillierte Anleitung zur Konfiguration eines SSL/TLS-Zertifikats auf einem Tomcat-Server.

Eine der grundlegenden Maßnahmen zur Absicherung von Tomcat ist die Einrichtung eines SSL-Zertifikats, um den sicheren Zugriff auf die Webanwendung über HTTPS zu ermöglichen.

Hierfür gibt es verschiedene Ansätze:

  • SSL-Terminierung am Load Balancer
  • SSL-Implementierung auf CDN-Ebene
  • Nutzung von Webservern wie Apache oder Nginx als vorgeschaltete Instanzen mit SSL-Implementierung

Wenn Sie jedoch keine dieser Optionen nutzen oder SSL direkt in Tomcat bereitstellen möchten, ist die folgende Anleitung hilfreich.

In diesem Artikel werden wir folgende Schritte durchführen:

  • Erstellung einer CSR (Certificate Signing Request)
  • Import des Zertifikats in eine Keystore-Datei
  • Aktivierung von SSL in Tomcat
  • Konfiguration des TLS-Protokolls
  • Anpassung von Tomcat, um auf Port 443 zu horchen
  • Testen von Tomcat auf SSL-Schwachstellen

Legen wir los…

Vorbereitung für das SSL/TLS-Zertifikat

Zunächst müssen wir eine CSR erstellen und diese von einer Zertifizierungsstelle signieren lassen. Dabei verwenden wir das Tool keytool zur Verwaltung der Zertifikate.

  • Melden Sie sich am Tomcat-Server an
  • Navigieren Sie zum Installationsverzeichnis von Tomcat
  • Erstellen Sie einen Ordner namens „ssl“
  • Führen Sie den Befehl zur Erzeugung eines Keystores aus
keytool -genkey -alias domainname -keyalg RSA -keysize 2048 -keystore filename.jks

In diesem Befehl gibt es zwei Variablen, die Sie möglicherweise anpassen sollten:

  • Alias – wählen Sie einen aussagekräftigen Namen, um ihn später schnell wiederzuerkennen. Ich empfehle, den Domainnamen zu verwenden.
  • Dateiname – hier empfiehlt sich ebenfalls, den Domainnamen beizubehalten.
  • Beispiel:

    [[email protected] ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks
    Keystore-Passwort eingeben:
    Neues Passwort erneut eingeben:
    Wie lautet Ihr Vor- und Nachname?
    [Unbekannt]: bloggerflare.com
    Wie lautet der Name Ihrer Organisationseinheit?
    [Unbekannt]: Blogging
    Wie lautet der Name Ihrer Organisation?
    [Unbekannt]: Geek Flare
    Wie lautet der Name Ihrer Stadt oder Gemeinde?
    [Unbekannt]:
    Wie lautet der Name Ihres Bundeslandes oder Ihrer Provinz?
    [Unbekannt]:
    Wie lautet der aus zwei Buchstaben bestehende Ländercode für diese Einheit?
    [Unbekannt]:
    Ist CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=Unknown, ST=Unknown, C=Unknown korrekt?
    [nein]: ja
    
    Schlüsselpasswort für <bloggerflare> eingeben
    (RETURN, falls identisch mit dem Keystore-Passwort):
    
    [[email protected] ssl]#
    

    Beachten Sie die Frage nach dem Vor- und Nachnamen. Sie ist etwas irreführend, da hier nicht Ihr Name, sondern der Domainname einzugeben ist, den Sie absichern möchten.

    Nachdem Sie alle Informationen eingegeben haben, wird die Keystore-Datei im aktuellen Arbeitsverzeichnis erstellt.

    Als nächstes generieren Sie eine neue CSR mit dem neu erstellten Keystore mithilfe des folgenden Befehls.

    keytool -certreq -alias bloggerflare -keyalg RSA -file bloggerflare.csr -keystore bloggerflare.jks

    Dadurch wird eine CSR erstellt, die Sie an die Zertifizierungsstelle senden müssen, um sie signieren zu lassen. Für Testzwecke können Sie einen kostenlosen Zertifikatsanbieter verwenden oder sich für einen Premium-Anbieter entscheiden.

    Ich habe das Zertifikat signieren lassen und werde es mit den folgenden Befehlen in den Keystore importieren.

    • Import des Root-Zertifikats vom Anbieter
    keytool -importcert -alias root -file root -keystore bloggerflare.jks
    • Import des Zwischenzertifikats
    keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks

    Hinweis: Ohne den Import von Root- und Zwischenzertifikat können Sie das Domänenzertifikat nicht in den Keystore importieren. Wenn Sie mehr als ein Zwischenzertifikat haben, müssen Sie alle importieren.

    • Import des Domänenzertifikats
    keytool -importcert -file bloggerflare.cer -keystore bloggerflare.jks -alias bloggerflare

    Sie erhalten eine Bestätigung, dass die Installation erfolgreich war.

    Zertifikatsantwort wurde im Keystore installiert

    Der Zertifikats-Keystore ist nun fertig. Kommen wir zum nächsten Schritt.

    Wenn Sie neu im Bereich SSL sind und mehr wissen möchten, empfehle ich diesen Online-Kurs: SSL/TLS-Operationen.

    Aktivierung von SSL in Tomcat

    Angenommen, Sie sind immer noch am Tomcat-Server angemeldet, navigieren Sie zum Ordner „conf“.

    • Erstellen Sie eine Sicherungskopie der Datei server.xml
    • Gehen Sie zum Abschnitt
    SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
    • Vergessen Sie nicht, den Namen und das Passwort der Keystore-Datei durch Ihre eigenen zu ersetzen
    • Starten Sie Tomcat neu, und Sie sollten feststellen, dass Tomcat nun über HTTPS erreichbar ist

    Super!

    Standardmäßiger HTTPS-Port

    Warum sollten wir das tun?

    Nun, wenn Sie sich den obigen Screenshot ansehen, greife ich über den Port 8080 mit HTTPS auf Tomcat zu, was nicht dem Standard entspricht, und es gibt noch weitere Gründe.

    • Sie möchten Benutzer nicht dazu auffordern, einen benutzerdefinierten Port zu verwenden
    • Der Browser gibt eine Warnung aus, wenn das Zertifikat für den Domainnamen ohne Port ausgestellt wurde

    Die Idee ist also, Tomcat so zu konfigurieren, dass er auf Port 443 horcht, um über https:// ohne Angabe der Portnummer erreichbar zu sein.

    Bearbeiten Sie dazu die Datei server.xml mit Ihrem bevorzugten Editor

    • Suchen Sie nach
    • Ändern Sie den Port von 8080 auf 443
    • Es sollte dann so aussehen:
    <Connector port="443" protocol="HTTP/1.1"
    connectionTimeout="20000"
    SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
    redirectPort="8443" />
    • Starten Sie Tomcat neu und greifen Sie über HTTPS ohne Portnummer auf Ihre Anwendung zu

    Großartig, es hat funktioniert!

    SSL/TLS-Schwachstellentest

    Zum Abschluss führen wir einen Test durch, um sicherzustellen, dass das System nicht anfällig für Online-Bedrohungen ist.

    Es gibt viele Online-Tools dafür. Ich werde SSL Labs verwenden.

    • Gehen Sie zu SSL-Labs und geben Sie die URL ein, um den Test zu starten.

    Und es ist GRÜN – also eine A-Bewertung.

    Es ist jedoch immer ratsam, den Bericht gründlich zu prüfen und zu sehen, ob es Schwachstellen gibt, die behoben werden sollten.

    Das war es für heute.

    Ich hoffe, diese Anleitung hilft Ihnen dabei, das Verfahren zur Absicherung von Tomcat mit einem SSL/TLS-Zertifikat zu verstehen. Wenn Sie mehr erfahren möchten, empfehle ich Ihnen den folgenden Kurs.