Tomcat 6 und SSL

Snape

Erfahrenes Mitglied
Hallo zusammen,
nachdem meine Verzweiflung immer größer wird, benötige ich wohl Hilfe. :-(

Ich möchte einfach nur den Tomcat 6 mit SSL versorgen. Dazu führte ich aus:


c:\Dokumente und Einstellungen\MyLogin\Eigene Dateien>c:\jdk1.6.0_13\bin\keytool.exe -genkey -v -keyalg RSA -alias testal
ias1 -keypass thekeypass -storepass thestorepass -dname "CN=TestCompany, OU=-, O=-, L=Munich, S=Bayern, C=DE" -keystore
testkeystore.jks



c:\Dokumente und Einstellungen\MyLogin\Eigene Dateien>c:\jdk1.6.0_13\bin\keytool.exe -export -alias testalias1 -storepass thestorepass -file server.cer -keystore testkeystore.jks


Nach Kopieren der Dateien testkeystore.jks und server.cer ins Benutzerverzeichnis

c:\Dokumente und Einstellungen\MyLogin\

bekomme ich diese Fehlermeldung beim Starten des Tomcat 6.0.26 (in Netbeans 6.9 im Debugmode):

Using CATALINA_BASE: "C:\Dokumente und Einstellungen\MyLogin\.netbeans\6.9\apache-tomcat-6.0.26_base"
Using CATALINA_HOME: "C:\Programme\Apache Software Foundation\Apache Tomcat 6.0.26"
Using CATALINA_TMPDIR: "C:\Dokumente und Einstellungen\MyLogin\.netbeans\6.9\apache-tomcat-6.0.26_base\temp"
Using JRE_HOME: "C:\jdk1.6.0_13"
Using CLASSPATH: "C:\Programme\Apache Software Foundation\Apache Tomcat 6.0.26\bin\bootstrap.jar"
Listening for transport dt_shmem at address: tomcat_shared_memory_id
13.07.2010 13:13:52 org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.20.
13.07.2010 13:13:52 org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
13.07.2010 13:13:52 org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8084
13.07.2010 13:13:52 org.apache.coyote.http11.Http11NioProtocol init
SCHWERWIEGEND: Error initializing endpoint
java.io.IOException: Keystore was tampered with, or password was incorrect

at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:771)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
at java.security.KeyStore.load(KeyStore.java:1185)

Der entsprechende Abschnitt in der server.xml dazu sieht so aus:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="${user.home}/testkeystore.jks" keystorePass="thekeypass"
clientAuth="false" sslProtocol="TLS" />

Ändere ich auf keystorePass="thestorepass", fliegt mir dieser Fehler um die Ohren:

Using CATALINA_BASE: "C:\Dokumente und Einstellungen\MyLogin\.netbeans\6.9\apache-tomcat-6.0.26_base"
Using CATALINA_HOME: "C:\Programme\Apache Software Foundation\Apache Tomcat 6.0.26"
Using CATALINA_TMPDIR: "C:\Dokumente und Einstellungen\MyLogin\.netbeans\6.9\apache-tomcat-6.0.26_base\temp"
Using JRE_HOME: "C:\jdk1.6.0_13"
Using CLASSPATH: "C:\Programme\Apache Software Foundation\Apache Tomcat 6.0.26\bin\bootstrap.jar"
Listening for transport dt_shmem at address: tomcat_shared_memory_id
13.07.2010 13:30:51 org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.20.
13.07.2010 13:30:51 org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
13.07.2010 13:30:52 org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8084
13.07.2010 13:30:52 org.apache.coyote.http11.Http11NioProtocol init
SCHWERWIEGEND: Error initializing endpoint
java.security.UnrecoverableKeyException: Cannot recover key

at sun.security.provider.KeyProtector.recover(KeyProtector.java:311)
at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:121)
at sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:38)
at java.security.KeyStore.getKey(KeyStore.java:763)

Was mache ich falsch, wo liegt der Fehler? Mir ist auch die Bedeutung von keystorepass (in der server.xml), storepass und keypass überhaupt nicht klar.
Hilfe! :confused::confused::confused:
 
Hi,

da man normalerweise einen Tomcat oder einen JBoss in der Produktion nicht im Tier 1 laufen lässt, sondern beispielsweise einen Apache davorsetzt, würde ich Dir empfehlen, den Tomcat so zu lassen und da einen Apache als SSL-Terminierer davorvozusetzen und per mod_ajp anzubinden. Das birgt den Vorteil, dass dein Tomcat besser geschützt ist und Du vor allem Dir nicht die Mühe machen musst, den TC umzukonfigurieren.

Grüße
gore
 
Hallo,

vermutlich fehlt nur wenig bei dir.
Der Parameter keyAlias ist wichtig, das ist die Referenz auf den Aliasnamen des zu verwendenden Zertifikats im keystore, wo noch mehr Zertifikate liegen könnten.
Bau das keyAlias mal ein und schau was passiert.

Code:
<Connector port="443"  ... keyAlias="testal"  ...  />

storepass - Passwort für den gesamten Keystore, braucht man um überhaupt dort hineinschauen zu dürfen
keypass - Passwort für das Schlüsselpaar, braucht man um auf den privaten Teil des Schlüsselpaares zugreifen zu können.

edit: hier steht viel dazu http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück