SSL mit Tomcat (mit JSSE)

+ andere TechDocs
+ JSP
+




Inhalt

  1. Weiterführende Informationen
  2. Key-Generierung und Zertifizierung (X.509)
    1. Key-Generierung
    2. (Vorläufige) Selbst-Zertifizierung
    3. Import eines echten SSL-Zertifikates
    4. Anzeige der Key-Daten
    5. Keystore-Datei
  3. Installation des JSSE in Tomcat


Weiterführende Informationen



Key-Generierung und Zertifizierung (X.509)


Key-Generierung

Schlüsselpaare können mit keytool.exe erzeugt werden, welches mit dem J2SE (siehe java-install.htm) automatisch mit installiert wird (z.B. unter C:\Program Files\Java\jdk1.6\bin\keytool.exe).
Der Key-Pair-Generierungs-Algorithmus muss für SSL für übliche Web-Browser auf RSA umgestellt werden.
Der Alias-Name und die Passwörter sollten für den ersten Versuch tomcat und changeit lauten.
Die dname-Parameter müssen natürlich angepasst werden.
  keytool -genkey -v -keyalg RSA -alias tomcat -keypass changeit -storepass changeit
          -dname "CN=Torsten Horn, OU=-, O=-, L=Aachen, S=NRW, C=DE"
Bedeutung der Parameter:

keyalgKey-Pair-Generierungs-Algorithmus (DSA oder RSA) (für SSL: RSA)
aliasName des Keystore-Eintrags (für Tomcat: tomcat)
keypassPasswort für das Schlüsselpaar
  storepass  Passwort für den gesamten Keystore
dnameDistinguished Name (X.500)
CNCommon Name (Vor- und Nachname)
OUOrganization Unit (Abteilung)
OOrganization Name (Firmenname)
LLocality Name (Ortsname, Stadt)
SState Name (Bundesstaat)
CCountry (Staat)


(Vorläufige) Selbst-Zertifizierung

  keytool -selfcert -v -alias tomcat -storepass changeit

Import eines echten SSL-Zertifikates

X.509-Zertifikate können auch zum Beispiel mit OpenSSL erstellt werden.
Sie müssen von einer CA (Certification Authority) als TTP (Trusted Third Party) beglaubigt werden (z.B. VeriSign, TC TrustCenter, Signtrust, TeleSec, Thawte Consulting).
Ein Zertifikat ist nur für einen Rechnernamen gültig und es kann nur ein Zertifikat auf einem Server installiert werden.
Zertifikate können z.B. folgendermaßen dem Keystore hinzugefügt werden:
  keytool -import -v -trustcacerts -alias tomcat -file CERT.pem

Anzeige der Key-Daten

  keytool -list -v -storepass changeit

Keystore-Datei

Wurde beim keytool-Kommando kein Zielverzeichnis (per -keystore) angegeben, befindet sich die Keystore-Datei in einem Default-Directory. Je nach Betriebssystem-Konfiguration kann der Pfad z.B. sein:
  user.home/.keystore
  C:\Windows\Profiles\<Mein Name>\.keystore
  C:\Users\<Mein Name>\.keystore
  C:\Dokumente und Einstellungen\<Mein Name>\.keystore
Falls Sie einen Windows-Pfad mit Leerzeichen eingeben wollen, kann dies zu Schwierigkeiten führen. Eine Lösungsmöglichkeit kann sein, statt der Windows-Verzeichnisnahmen die auch unter neuen Windows-Versionen noch existenten alten DOS-8.3-Verzeichnisnamen zu verwenden. Diese können Sie in der Kommandozeilen-Konsole ermitteln mit:
  dir /X
Statt zum Beispiel 'C:\Dokumente und Einstellungen\All Users\.keystore' können Sie
  C:\DOKUME~1\ALLUSE~1\.keystore
verwenden (bitte die für Sie korrekten 8.3-Namen auf Ihrem PC mit 'dir /X' ermitteln).

Installation des JSSE in Tomcat

Bei J2SE 1.4.x ist JSSE enthalten und braucht eventuell nicht gesondert installiert zu werden.
Bei Tomcat 4.x kann die Installation einfacher sein, wenn die .keystore-Datei in das Tomcat-common-Verzeichnis kopiert wird.
Die folgende Beschreibung gilt für J2SE 1.3.x und Tomcat 3.x:

  1. Tomcat installieren (siehe z.B. Windows, Linux).
  2. Key und (Selbst-)Zertifikat in Keystore erstellen, wie oben beschrieben.
    Die .keystore-Datei muss im User-Verzeichnis des Benutzers gespeichert sein, unter dem Tomcat laufen wird.
    Wird Tomcat als Windows-Service betrieben und ist kein Benutzer eingeloggt, muss die erstellte .keystore-Datei nach C:\Dokumente und Einstellungen\Default User bzw. C:\Documents and Settings\Default User kopiert werden.
  3. Download von JSSE von http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136007.html.
  4. Zip-Datei (z.B. jsse-1_0_2-gl.zip) entpacken.
  5. Normalerweise müssen die drei JSSE-Dateien jcert.jar, jnet.jar und jsse.jar nur nach $JAVA_HOME/jre/lib/ext (z.B. C:\Program Files\Java\jdk1.6\jre\lib\ext) kopiert werden. Unter bestimmten Voraussetzungen kann es nützlich sein, sie zusätzlich nach $TOMCAT_HOME/lib (z.B. D:\Tools\Tomcat\lib) zu kopieren.
  6. In der Datei $JAVA_HOME/jre/lib/security/java.security (z.B. C:\Program Files\Java\jdk1.6\jre\lib\security\java.security) die 'List of providers' suchen und die Zeile
    security.provider.2=com.sun.net.ssl.internal.ssl.Provider
    hinzufügen (dabei die '2' eventuell anpassen).
  7. In der Datei $TOMCAT_HOME/conf/server.xml (z.B. D:\Tools\Tomcat\conf\server.xml) den zweiten Eintrag <Connector ...> ... </Connector> suchen, dort port="8443" durch port="443" ersetzen, und die Zeilen '<!--' und '-->' vor und hinter diesem Block entfernen.
  8. Tomcat neu starten und 'https://localhost' testen (beachten: 'https' statt 'http').
  9. Ist das Zertificat nur ein unbeglaubigtes Selbst-Zertifikat, erscheint eine Meldung ähnlich zu:
    Das Sicherheitszertifikat der Site ist fehlerhaft.
    Soll der Vorgang fortgesetzt werden ?

    Hier muss mit 'Ja' geantwortet werden. Unter 'Zertifikat anzeigen' können die Daten des Zertifikats geprüft werden.
  10. Unter den 'Eigenschaften' der angezeigten Web-Seite sollte die SSL-Funktion und das Zertifikat überprüft werden.
  11. Bei Java-Fehlermeldungen überprüfen Sie, ob die .keystore-Datei im richtigen Verzeichnis gespeichert ist und ob das Tomcat-Passwort zur .keystore-Datei passt. Wenn Sie unterschiedliche Passwörter verwenden, müssen Sie dies im 'keystorePass'-Attribut in der Tomcat-'server.xml'-Datei angeben.




Weitere Themen: andere TechDocs | HTML | JavaScript | JSP | Webanwendungen
© 1998-2007 Torsten Horn, Aachen