Mehr

8.5: Neue Seite - Geowissenschaften

8.5: Neue Seite - Geowissenschaften


8.5: Neue Seite

Problem

Wenn der Dienst Internetinformationsdienste (IIS) auf Windows Server 2012 beim Systemstart gestartet wird, aktiviert er automatisch alle konfigurierten Websites. Das bedeutet, dass beim ersten Zugriff auf eine Site diese verfügbar ist und schnell reagiert. Bei einem System mit einer großen Anzahl von konfigurierten Sites erfordert es jedoch nicht nur viel Zeit und Ressourcen, alle diese Sites gleichzeitig zu aktivieren, sondern die Sites können auch eine große Menge an Arbeitsspeicher belegen. Wenn auf die Mehrheit der Sites selten zugegriffen wird, kann dies eine unnötige Verschwendung von Systemressourcen bedeuten.

Beachten Sie, dass sich "Aktivierung" in diesem Kontext auf einen Prozess bezieht, bei dem IIS eine Site beim HTTP-Protokollstapel (HTTP.SYS) registriert, der Teil des Windows Server-Betriebssystems ist. Diese Aktivierung ist nicht zu verwechseln mit der Aktion zum Anlegen eines Worker-Prozesses für eine Site.


Apache Tomcat 8

Die folgende Beschreibung verwendet den Variablennamen $CATALINA_BASE, um auf das Basisverzeichnis zu verweisen, gegen das die meisten relativen Pfade aufgelöst werden. Wenn Sie Tomcat nicht durch Festlegen eines CATALINA_BASE-Verzeichnisses für mehrere Instanzen konfiguriert haben, wird $CATALINA_BASE auf den Wert von $CATALINA_HOME gesetzt, dem Verzeichnis, in dem Sie Tomcat installiert haben.

Um die SSL/TLS-Unterstützung auf Tomcat zu installieren und zu konfigurieren, müssen Sie diese einfachen Schritte ausführen. Weitere Informationen finden Sie im Rest dieser Anleitung.

Erstellen Sie eine Keystore-Datei zum Speichern des privaten Schlüssels und des selbstsignierten Zertifikats des Servers, indem Sie den folgenden Befehl ausführen:

und geben Sie einen Passwortwert von "changeit" an.

Entkommentieren Sie den Eintrag "SSL HTTP/1.1 Connector" in $CATALINA_BASE/conf/server.xml und ändern Sie ihn wie im Abschnitt Konfiguration unten beschrieben.

Einführung in SSL/TLS

Transport Layer Security (TLS) und sein Vorgänger Secure Sockets Layer (SSL) sind Technologien, die es Webbrowsern und Webservern ermöglichen, über eine gesicherte Verbindung zu kommunizieren. Dies bedeutet, dass die gesendeten Daten von einer Seite verschlüsselt, übertragen und dann von der anderen Seite vor der Verarbeitung entschlüsselt werden. Dies ist ein bidirektionaler Prozess, was bedeutet, dass sowohl der Server als auch der Browser den gesamten Datenverkehr verschlüsseln, bevor Daten gesendet werden.

Ein weiterer wichtiger Aspekt des SSL/TLS-Protokolls ist die Authentifizierung. Dies bedeutet, dass bei Ihrem ersten Versuch, mit einem Webserver über eine sichere Verbindung zu kommunizieren, dieser Server Ihrem Webbrowser eine Reihe von Anmeldeinformationen in Form eines "Zertifikats" präsentiert, um zu beweisen, dass die Website wer ist und was sie behauptet sein. In bestimmten Fällen kann der Server auch ein Zertifikat von Ihrem Webbrowser anfordern und nach einem Nachweis fragen, dass Sie sind die, die Sie vorgeben zu sein. Dies wird als "Client-Authentifizierung" bezeichnet, obwohl dies in der Praxis eher für Business-to-Business (B2B)-Transaktionen als für einzelne Benutzer verwendet wird. Die meisten SSL-aktivierten Webserver fordern keine Client-Authentifizierung an.

SSL/TLS und Tomcat

Beachten Sie, dass die Konfiguration von Tomcat für die Nutzung sicherer Sockets normalerweise nur erforderlich ist, wenn es als eigenständiger Webserver ausgeführt wird. Details finden Sie im Dokument zu Sicherheitsüberlegungen. Wenn Tomcat hauptsächlich als Servlet/JSP-Container hinter einem anderen Webserver wie Apache oder Microsoft IIS ausgeführt wird, ist es normalerweise erforderlich, den primären Webserver so zu konfigurieren, dass er die SSL-Verbindungen von Benutzern verarbeitet. Normalerweise verhandelt dieser Server alle SSL-bezogenen Funktionen und leitet dann alle für den Tomcat-Container bestimmten Anforderungen erst weiter, nachdem diese Anforderungen entschlüsselt wurden. Ebenso gibt Tomcat Klartextantworten zurück, die verschlüsselt werden, bevor sie an den Browser des Benutzers zurückgegeben werden. In dieser Umgebung weiß Tomcat, dass die Kommunikation zwischen dem primären Webserver und dem Client über eine sichere Verbindung stattfindet (weil Ihre Anwendung dies abfragen können muss), aber es beteiligt sich nicht an der Verschlüsselung oder Entschlüsselung selbst.

Tomcat kann jedes der kryptografischen Protokolle verwenden, die von der zugrunde liegenden Umgebung bereitgestellt werden. Java selbst bietet kryptografische Fähigkeiten über JCE/JCA und verschlüsselte Kommunikationsfähigkeiten über JSSE. Jeder konforme kryptografische "Anbieter" kann Tomcat kryptografische Algorithmen zur Verfügung stellen. Der integrierte Anbieter (SunJCE) bietet Unterstützung für verschiedene SSL/TLS-Versionen wie SSLv3, TLSv1, TLSv1.1 usw. Einzelheiten zur Unterstützung von Protokollen und Algorithmen finden Sie in der Dokumentation zu Ihrer Java-Version.

Wenn Sie die optionale tcnative-Bibliothek verwenden, können Sie den OpenSSL-Kryptografieanbieter über JCA/JCE/JSSE verwenden, der möglicherweise eine andere Auswahl an kryptografischen Algorithmen und/oder Leistungsvorteilen im Vergleich zum SunJCE-Anbieter bietet. Sie können auch tcnative verwenden, um den APR-Connector zu aktivieren, der OpenSSL für seine kryptografischen Operationen verwendet. Einzelheiten zur Protokoll- und Algorithmusunterstützung finden Sie in der Dokumentation zu Ihrer OpenSSL-Version.

Zertifikate

Um SSL zu implementieren, muss ein Webserver für jede externe Schnittstelle (IP-Adresse), die sichere Verbindungen akzeptiert, über ein zugehöriges Zertifikat verfügen. Die Theorie hinter diesem Design ist, dass ein Server eine angemessene Sicherheit bieten sollte, dass sein Besitzer der ist, für den Sie ihn halten, insbesondere bevor er vertrauliche Informationen erhält. Obwohl eine umfassendere Erklärung von Zertifikaten den Rahmen dieses Dokuments sprengen würde, stellen Sie sich ein Zertifikat als einen "digitalen Pass" für eine Internetadresse vor. Es gibt an, welcher Organisation die Site zugeordnet ist, zusammen mit einigen grundlegenden Kontaktinformationen zum Site-Besitzer oder -Administrator.

Dieses Zertifikat wird von seinem Besitzer kryptographisch signiert und ist daher für andere äußerst schwer zu fälschen. Damit das Zertifikat in den Browsern der Besucher ohne Warnungen funktioniert, muss es von einem vertrauenswürdigen Dritten signiert werden. Diese nennt man Zertifizierungsstellen (CAs). Um ein signiertes Zertifikat zu erhalten, müssen Sie eine Zertifizierungsstelle auswählen und den Anweisungen Ihrer ausgewählten Zertifizierungsstelle folgen, um Ihr Zertifikat zu erhalten. Es steht eine Reihe von Zertifizierungsstellen zur Verfügung, darunter auch einige, die Zertifikate kostenlos anbieten.

Java bietet ein relativ einfaches Befehlszeilentool namens keytool , mit dem leicht ein "selbstsigniertes" Zertifikat erstellt werden kann. Selbstsignierte Zertifikate sind einfach benutzergenerierte Zertifikate, die nicht von einer bekannten Zertifizierungsstelle signiert wurden und daher nicht wirklich garantiert authentisch sind. Obwohl selbstsignierte Zertifikate für einige Testszenarien nützlich sein können, sind sie für keine Form des Produktionseinsatzes geeignet.

Allgemeine Tipps zum Ausführen von SSL

Beim Sichern einer Website mit SSL ist es wichtig sicherzustellen, dass alle von der Website verwendeten Assets über SSL bereitgestellt werden, damit ein Angreifer die Sicherheit nicht umgehen kann, indem er schädliche Inhalte in eine JavaScript-Datei oder ähnliches einfügt. Um die Sicherheit Ihrer Website weiter zu erhöhen, sollten Sie den HSTS-Header verwenden. Damit können Sie dem Browser mitteilen, dass Ihre Seite immer über https aufgerufen werden soll.

Die Verwendung namensbasierter virtueller Hosts in einer gesicherten Verbindung erfordert eine sorgfältige Konfiguration der in einem einzelnen Zertifikat oder Tomcat 8.5 angegebenen Namen, wenn Server Name Indication (SNI) unterstützt wird. SNI ermöglicht die Zuordnung mehrerer Zertifikate mit unterschiedlichen Namen zu einem einzigen TLS-Connector.

Aufbau

Bereiten Sie den Zertifikatsschlüsselspeicher vor

Tomcat arbeitet derzeit nur mit Keystores im JKS-, PKCS11- oder PKCS12-Format. Das JKS-Format ist das Java-Standardformat "Java KeyStore" und wird vom Befehlszeilendienstprogramm keytool erstellt. Dieses Tool ist im JDK enthalten. Das PKCS12-Format ist ein Internetstandard und kann unter anderem über OpenSSL und Microsofts Key-Manager manipuliert werden.

Jeder Eintrag in einem Keystore wird durch eine Aliaszeichenfolge identifiziert. Während viele Keystore-Implementierungen bei Aliasen die Groß-/Kleinschreibung nicht beachten, sind Implementierungen mit Beachtung der Groß-/Kleinschreibung verfügbar. Die PKCS11-Spezifikation erfordert beispielsweise, dass bei Aliasnamen die Groß-/Kleinschreibung beachtet wird. Um Probleme im Zusammenhang mit der Berücksichtigung der Groß-/Kleinschreibung von Aliasen zu vermeiden, wird nicht empfohlen, Aliase zu verwenden, die sich nur in der Groß-/Kleinschreibung unterscheiden.

Um ein vorhandenes Zertifikat in einen JKS-Keystore zu importieren, lesen Sie bitte die Dokumentation (in Ihrem JDK-Dokumentationspaket) zu keytool . Beachten Sie, dass OpenSSL oft lesbare Kommentare vor dem Schlüssel hinzufügt, aber keytool unterstützt dies nicht. Wenn Ihr Zertifikat also Kommentare vor den Schlüsseldaten enthält, entfernen Sie diese, bevor Sie das Zertifikat mit keytool importieren.

Um ein vorhandenes, von Ihrer eigenen CA signiertes Zertifikat mit OpenSSL in einen PKCS12-Keystore zu importieren, führen Sie einen Befehl wie den folgenden aus:

Für komplexere Fälle konsultieren Sie die OpenSSL-Dokumentation.

Um einen neuen JKS-Keystore von Grund auf neu zu erstellen, der ein einzelnes selbstsigniertes Zertifikat enthält, führen Sie Folgendes über eine Terminalbefehlszeile aus:

(Der RSA-Algorithmus sollte als sicherer Algorithmus bevorzugt werden, was auch die allgemeine Kompatibilität mit anderen Servern und Komponenten gewährleistet.)

Dieser Befehl erstellt im Home-Verzeichnis des Benutzers, unter dem Sie ihn ausführen, eine neue Datei mit dem Namen " .keystore ". Um einen anderen Speicherort oder Dateinamen anzugeben, fügen Sie dem oben gezeigten keytool-Befehl den Parameter -keystore gefolgt vom vollständigen Pfadnamen zu Ihrer Keystore-Datei hinzu. Sie müssen diesen neuen Speicherort auch in der Konfigurationsdatei server.xml angeben, wie später beschrieben. Beispielsweise:

Nach Ausführung dieses Befehls werden Sie zunächst zur Eingabe des Keystore-Passworts aufgefordert. Das von Tomcat verwendete Standardpasswort ist "changeit" (alles in Kleinbuchstaben), obwohl Sie bei Bedarf ein benutzerdefiniertes Passwort angeben können. Sie müssen auch das benutzerdefinierte Kennwort in der Konfigurationsdatei server.xml angeben, wie später beschrieben.

Als Nächstes werden Sie zur Eingabe allgemeiner Informationen zu diesem Zertifikat aufgefordert, z. B. Firma, Kontaktname usw. Diese Informationen werden Benutzern angezeigt, die versuchen, auf eine sichere Seite in Ihrer Anwendung zuzugreifen. Stellen Sie daher sicher, dass die hier bereitgestellten Informationen mit ihren Erwartungen übereinstimmen.

Schließlich werden Sie aufgefordert, die Schlüsselpasswort, das ist das Kennwort speziell für dieses Zertifikat (im Gegensatz zu allen anderen Zertifikaten, die in derselben Keystore-Datei gespeichert sind). Die Keytool-Eingabeaufforderung teilt Ihnen mit, dass beim Drücken der EINGABETASTE automatisch dasselbe Kennwort für den Schlüssel verwendet wird wie für den Schlüsselspeicher. Es steht Ihnen frei, dasselbe Passwort zu verwenden oder ein benutzerdefiniertes auszuwählen. Wenn Sie ein anderes Kennwort als das Schlüsselspeicherkennwort auswählen, müssen Sie auch das benutzerdefinierte Kennwort in der Konfigurationsdatei server.xml angeben.

Wenn alles erfolgreich war, haben Sie jetzt eine Keystore-Datei mit einem Zertifikat, das von Ihrem Server verwendet werden kann.

Bearbeiten Sie die Tomcat-Konfigurationsdatei

Tomcat kann drei verschiedene Implementierungen von SSL verwenden:

  • JSSE-Implementierung als Teil der Java-Laufzeit bereitgestellt
  • JSSE-Implementierung, die OpenSSL verwendet
  • APR-Implementierung, die standardmäßig die OpenSSL-Engine verwendet

Die genauen Konfigurationsdetails hängen davon ab, welche Implementierung verwendet wird. Wenn Sie Connector durch Angabe von generischem Protokoll="HTTP/1.1" konfiguriert haben, wird die von Tomcat verwendete Implementierung automatisch ausgewählt. Wenn die Installation APR verwendet – d. h. Sie haben die native Tomcat-Bibliothek installiert – verwendet sie die JSSE OpenSSL-Implementierung, andernfalls verwendet sie die Java JSSE-Implementierung.

Die automatische Auswahl der Implementierung kann bei Bedarf vermieden werden. Dies geschieht durch die Angabe eines Klassennamens im Protokoll Attribut des Connectors.

Um einen Java-Connector (JSSE) zu definieren, unabhängig davon, ob die APR-Bibliothek geladen ist oder nicht, verwenden Sie einen der folgenden Schritte:

Die OpenSSL JSSE-Implementierung kann bei Bedarf auch explizit konfiguriert werden. Wenn die APR-Bibliothek installiert ist (wie bei der Verwendung des APR-Connectors), ermöglicht die Verwendung des sslImplementationName-Attributs die Aktivierung. Bei Verwendung der OpenSSL-JSSE-Implementierung kann die Konfiguration entweder die JSSE-Attribute oder die OpenSSL-Attribute (wie für den APR-Connector verwendet) verwenden, darf jedoch nicht Attribute beider Typen in demselben SSLHostConfig- oder Connector-Element mischen.

Um einen APR-Connector anzugeben (die APR-Bibliothek muss verfügbar sein), verwenden Sie alternativ:

Wenn Sie APR oder JSSE OpenSSL verwenden, haben Sie die Möglichkeit, eine alternative Engine zu OpenSSL zu konfigurieren.

Außerdem kann das Attribut useAprConnector verwendet werden, damit Tomcat standardmäßig den APR-Connector anstelle des NIO-Connectors verwendet:

Um OpenSSL zu aktivieren, stellen Sie also sicher, dass das SSLEngine-Attribut auf einen anderen Wert als off gesetzt ist. Der Standardwert ist on und wenn Sie einen anderen Wert angeben, muss es sich um einen gültigen OpenSSL-Engine-Namen handeln.

SSLRandomSeed ermöglicht die Angabe einer Entropiequelle. Das Produktivsystem benötigt eine zuverlässige Entropiequelle, aber die Erfassung der Entropie kann viel Zeit in Anspruch nehmen, daher können Testsysteme keine blockierenden Entropiequellen wie "/dev/urandom" verwenden, die einen schnelleren Start von Tomcat ermöglichen.

Der letzte Schritt besteht darin, den Connector in der Datei $CATALINA_BASE/conf/server.xml zu konfigurieren, wobei $CATALINA_BASE das Basisverzeichnis für die Tomcat-Instanz darstellt. Ein <Connector>-Beispielelement für einen SSL-Connector ist in der mit Tomcat installierten Standarddatei server.xml enthalten. Um einen SSL-Connector zu konfigurieren, der JSSE verwendet, müssen Sie die Kommentare entfernen und so bearbeiten, dass er in etwa so aussieht:

Hinweis: Wenn tomcat-native installiert ist, verwendet die Konfiguration JSSE mit einer OpenSSL-Implementierung, die entweder diese Konfiguration oder das unten angegebene APR-Konfigurationsbeispiel unterstützt.

Der APR-Connector verwendet für viele SSL-Einstellungen unterschiedliche Attribute, insbesondere Schlüssel und Zertifikate. Ein Beispiel für eine APR-Konfiguration ist:

Die Konfigurationsoptionen und Informationen zu den obligatorischen Attributen sind im Abschnitt SSL-Unterstützung der HTTP-Connector-Konfigurationsreferenz dokumentiert. Stellen Sie sicher, dass Sie die richtigen Attribute für den verwendeten Connector verwenden. Die NIO- und NIO2-Connectors verwenden JSSE, es sei denn, die JSSE OpenSSL-Implementierung ist installiert (in diesem Fall unterstützt sie entweder den JSSE- oder OpenSSL-Konfigurationsstil), während der APR/native Connector APR verwendet.

Das Portattribut ist die TCP/IP-Portnummer, an der Tomcat auf sichere Verbindungen lauscht. Sie können dies auf eine beliebige Portnummer ändern (z. B. auf den Standardport für die https-Kommunikation, der 443) ist. Es ist jedoch eine spezielle Einrichtung (außerhalb des Umfangs dieses Dokuments) erforderlich, um Tomcat auf Portnummern unter 1024 auf vielen Betriebssystemen auszuführen.

Wenn Sie hier die Portnummer ändern, sollten Sie auch den Wert ändern, der für das Attribut redirectPort auf dem Nicht-SSL-Connector angegeben ist. Dadurch kann Tomcat Benutzer, die versuchen, auf eine Seite zuzugreifen, mit einer Sicherheitseinschränkung, die angibt, dass SSL erforderlich ist, automatisch umleiten, wie von der Servlet-Spezifikation gefordert.

Nachdem Sie diese Konfigurationsänderungen abgeschlossen haben, müssen Sie Tomcat wie gewohnt neu starten, und Sie sollten im Geschäft sein. Sie sollten in der Lage sein, über SSL auf jede von Tomcat unterstützte Webanwendung zuzugreifen. Versuchen Sie zum Beispiel:

und Sie sollten die übliche Tomcat-Splash-Seite sehen (es sei denn, Sie haben die ROOT-Webanwendung geändert). Wenn dies nicht funktioniert, enthält der folgende Abschnitt einige Tipps zur Fehlerbehebung.

Installieren eines Zertifikats von einer Zertifizierungsstelle

Um ein Zertifikat von einer Zertifizierungsstelle (wie verisign.com, thawte.com oder trustcenter.de) zu erhalten und zu installieren, lesen Sie den vorherigen Abschnitt und folgen Sie dann diesen Anweisungen:

Erstellen einer lokalen Zertifikatsignierungsanforderung (CSR)

Um ein Zertifikat von einer Zertifizierungsstelle Ihrer Wahl zu erhalten, müssen Sie einen sogenannten Certificate Signing Request (CSR) erstellen. Diese CSR wird von der Zertifizierungsstelle verwendet, um ein Zertifikat zu erstellen, das Ihre Website als "sicher" identifiziert. Gehen Sie wie folgt vor, um eine CSR zu erstellen:

    Erstellen Sie ein lokales selbstsigniertes Zertifikat (wie im vorherigen Abschnitt beschrieben):

Jetzt haben Sie eine Datei namens certreq.csr, die Sie bei der Zertifizierungsstelle einreichen können (siehe dazu die Dokumentation der Website der Zertifizierungsstelle). Im Gegenzug erhalten Sie ein Zertifikat.

Importieren des Zertifikats

Nachdem Sie Ihr Zertifikat jetzt haben, können Sie es in Ihren lokalen Schlüsselspeicher importieren. Zunächst müssen Sie ein sogenanntes Chain Certificate oder Root Certificate in Ihren Keystore importieren. Danach können Sie mit dem Importieren Ihres Zertifikats fortfahren.

  • Laden Sie ein Kettenzertifikat von der Zertifizierungsstelle herunter, von der Sie das Zertifikat erhalten haben.
    Kommerzielle Zertifikate von Verisign.com finden Sie unter: http://www.verisign.com/support/install/intermediate.html
    Testzertifikate von Verisign.com finden Sie unter: http://www.verisign.com/support/verisign-intermediate-ca/Trial_Secure_Server_Root/index.html
    Für Trustcenter.de gehen Sie zu: http://www.trustcenter.de/certservices/cacerts/en/en.htm#server
    Für Thawte.com gehen Sie zu: http://www.thawte.com/certs/trustmap.html
  • Importieren Sie das Kettenzertifikat in Ihren Schlüsselspeicher

Jede Zertifizierungsstelle unterscheidet sich in der Regel geringfügig von den anderen. Sie benötigen möglicherweise leicht abweichende Informationen und/oder stellen das Zertifikat und die zugehörige Zertifikatskette in unterschiedlichen Formaten bereit. Darüber hinaus ändern sich die Regeln, die die Zertifizierungsstellen für die Ausstellung von Zertifikaten verwenden, im Laufe der Zeit. Als Ergebnis können Sie feststellen, dass die oben angegebenen Befehle möglicherweise geändert werden müssen. Wenn Sie Hilfe benötigen, ist Hilfe über die Mailingliste für Apache Tomcat-Benutzer verfügbar.

Verwenden von OCSP-Zertifikaten

Um das Online Certificate Status Protocol (OCSP) mit Apache Tomcat zu verwenden, stellen Sie sicher, dass Sie den Tomcat Native Connector heruntergeladen, installiert und konfiguriert haben. Wenn Sie die Windows-Plattform verwenden, stellen Sie außerdem sicher, dass Sie den ocsp-fähigen Connector herunterladen.

Um OCSP verwenden zu können, benötigen Sie Folgendes:

  • OCSP-fähige Zertifikate
  • Tomcat mit SSL-APR-Connector
  • Konfigurierter OCSP-Responder

Generieren von OCSP-fähigen Zertifikaten

Apache Tomcat erfordert, dass das OCSP-aktivierte Zertifikat den OCSP-Responder-Standort im Zertifikat codiert hat. Die grundlegenden OCSP-bezogenen Zertifizierungsstelleneinstellungen in der Datei openssl.cnf könnten wie folgt aussehen:

Die obigen Einstellungen codieren die OCSP-Responder-Adresse 127.0.0.1:8088 in das Zertifikat. Beachten Sie, dass Sie für die folgenden Schritte openssl.cnf und andere Konfigurationen Ihrer CA bereithalten müssen. So generieren Sie ein OCSP-fähiges Zertifikat:

OCSP-Connector konfigurieren

Um den OCSP-Connector zu konfigurieren, stellen Sie zunächst sicher, dass Sie die Tomcat APR-Bibliothek laden. Weitere Informationen zur Installation von APR finden Sie in der auf Apache Portable Runtime (APR) basierenden nativen Bibliothek für Tomcat. Eine grundlegende OCSP-aktivierte Connectordefinition in der Datei server.xml sieht wie folgt aus:

OCSP-Responder starten

Apache Tomcat fragt einen OCSP-Responder-Server ab, um den Zertifikatsstatus abzurufen. Beim Testen können Sie einen OCSP-Responder einfach erstellen, indem Sie Folgendes ausführen:

Beachten Sie, dass bei Verwendung von OCSP der im Connector-Zertifikat codierte Responder ausgeführt werden muss. Weitere Informationen finden Sie in der OCSP-Dokumentation.

Fehlerbehebung

Im Folgenden finden Sie eine Liste der häufigsten Probleme, die beim Einrichten der SSL-Kommunikation auftreten können, und was Sie dagegen tun können.

    Wenn Tomcat startet, erhalte ich eine Ausnahme wie "java.io.FileNotFoundException: / nicht gefunden".

Eine wahrscheinliche Erklärung ist, dass Tomcat die Keystore-Datei dort nicht finden kann, wo sie sucht. Standardmäßig erwartet Tomcat, dass die Keystore-Datei den Namen .keystore im Home-Verzeichnis des Benutzers trägt, in dem Tomcat ausgeführt wird (das mit Ihrem identisch sein kann oder nicht :-). Wenn sich die Keystore-Datei an einer anderen Stelle befindet, müssen Sie dem <Connector>-Element in der Tomcat-Konfigurationsdatei ein keystoreFile-Attribut hinzufügen.

Angenommen, jemand hat es nicht eigentlich Ihre Keystore-Datei manipuliert wurde, ist die wahrscheinlichste Ursache, dass Tomcat ein anderes Passwort verwendet als das, das Sie beim Erstellen der Keystore-Datei verwendet haben. Um dies zu beheben, können Sie entweder zurückgehen und die Keystore-Datei neu erstellen oder das keystorePass-Attribut zum Element <Connector> in der Tomcat-Konfigurationsdatei hinzufügen oder aktualisieren. ERINNERUNG - Bei Passwörtern muss die Groß-/Kleinschreibung beachtet werden!

Eine wahrscheinliche Erklärung ist, dass Tomcat den Alias ​​für den Serverschlüssel im angegebenen Schlüsselspeicher nicht finden kann. Überprüfen Sie, ob das richtige keystoreFile und keyAlias ​​im Element <Connector> in der Tomcat-Konfigurationsdatei angegeben sind. ERINNERUNG - Bei keyAlias-Werten kann die Groß-/Kleinschreibung beachtet werden!

Wenn Sie den APR/nativen Connector oder die JSSE OpenSSL-Implementierung verwenden, wird die Stärke der kurzlebigen DH-Schlüssel anhand der Schlüsselgröße Ihres RSA-Zertifikats bestimmt. Zum Beispiel führt ein 2048-Bit-RSA-Schlüssel zur Verwendung einer 2048-Bit-Primzahl für die DH-Schlüssel. Leider unterstützt Java 6 nur 768 Bit und Java 7 unterstützt nur 1024 Bit. Wenn Ihr Zertifikat also einen stärkeren Schlüssel hat, können alte Java-Clients solche Handshake-Fehler verursachen. Als Gegenmaßnahme können Sie entweder versuchen, sie zu zwingen, eine andere Verschlüsselung zu verwenden, indem Sie eine entsprechende SSLCipherSuite konfigurieren und SSLHonorCipherOrder aktivieren, oder schwache DH-Parameter in Ihre Zertifikatsdatei einbetten. Letzterer Ansatz wird nicht empfohlen, da er die SSL-Sicherheit schwächt (Logjam-Angriff).

Wenn Sie immer noch Probleme haben, ist eine gute Informationsquelle die TOMCAT-BENUTZER Mailingliste. Hinweise zu Archiven früherer Nachrichten in dieser Liste sowie Informationen zu Abonnements und Abmeldungen finden Sie unter https://tomcat.apache.org/lists.html.

Verwenden von SSL für die Sitzungsverfolgung in Ihrer Anwendung

Dies ist eine neue Funktion in der Servlet 3.0-Spezifikation. Da die SSL-Sitzungs-ID verwendet wird, die der physischen Client-Server-Verbindung zugeordnet ist, gibt es einige Einschränkungen. Sie sind:

  • Tomcat muss einen Connector mit dem Attribut . haben isSecure auf wahr gesetzt.
  • Wenn SSL-Verbindungen von einem Proxy oder einem Hardwarebeschleuniger verwaltet werden, müssen sie die SSL-Anforderungsheader (siehe SSLValve) ausfüllen, damit die SSL-Sitzungs-ID für Tomcat sichtbar ist.
  • Wenn Tomcat die SSL-Verbindung beendet, kann die Sitzungsreplikation nicht verwendet werden, da die SSL-Sitzungs-IDs auf jedem Knoten unterschiedlich sind.

Um die SSL-Sitzungsverfolgung zu aktivieren, müssen Sie einen Kontext-Listener verwenden, um den Verfolgungsmodus für den Kontext auf SSL festzulegen (wenn ein anderer Verfolgungsmodus aktiviert ist, wird dieser bevorzugt verwendet). Es könnte etwa so aussehen:

Hinweis: SSL-Sitzungsverfolgung ist für die NIO- und NIO2-Anschlüsse implementiert. Es ist noch nicht für den APR-Connector implementiert.

Verschiedene Tipps und Bits

Um über die Anfrage auf die SSL-Sitzungs-ID zuzugreifen, verwenden Sie:

Weitere Diskussionen zu diesem Bereich finden Sie unter Bugzilla.

Um eine SSL-Sitzung zu beenden, verwenden Sie:

Beachten Sie, dass dieser Code aufgrund der Verwendung der SSLSessionManager-Klasse Tomcat-spezifisch ist. Dies ist derzeit nur für die NIO- und NIO2-Anschlüsse verfügbar, nicht für den APR/native-Anschluss.


Schau das Video: Entstehung von Galaxien, Sternen, Planeten, Meteoriten Planetare Geologie 5. Christian Köberl