Invalid keystore format mit SSL in Tomcat 6
Ich versuche zum einrichten von SSL in meinem lokalen Tomcat 6 installation. Für diese habe ich die offizielle How-To Sie Folgendes tun:
$JAVA_HOME/bin/keytool -genkey -v -keyalg RSA -alias
tomcat -keypass changeit -storepass changeit
$JAVA_HOME/bin/keytool -export -alias tomcat -storepass
changeit -file /root/server.crt
Dann ändern $CATALINA_BASE/conf/server.xml in-kommentieren diese:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/root/.keystore" keystorePass="changeit" />
Nach dem Start von Tomcat bekomme ich diese Exception:
INFO: Initializing Coyote HTTP/1.1 on http-8080
30.06.2011 10:15:24 org.apache.tomcat.util.net.jsse.JSSESocketFactory getStore
SCHWERWIEGEND: Failed to load keystore type JKS with path /root/.keystore
due to Invalid keystore format
java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
at java.security.KeyStore.load(KeyStore.java:1185)
Wenn ich einen Blick in den keystore mit keytool -list
bekomme ich
root@host:~# $JAVA_HOME/bin/keytool -list
Enter key store password: changeit
Key store type: gkr
Key store provider: GNU-CRYPTO
Key store contains 1 entry(ies)
Alias name: tomcat
Creation timestamp: Donnerstag, 30. Juni 2011 - 10:13:40 MESZ
Entry type: key-entry
Certificate fingerprint (MD5): 6A:B9:...C:89:1C
Offensichtlich, wird die keystore-Typen sind unterschiedlich. Wie kann ich den Typ ändern und wird in diesem Update mein problem? Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie die
keytool
bist du mit dem GNU-Umsetzung, nicht das von Oracle/Sun oder OpenJDK. Aus der Ausgabe vonkeytool -list
erzeugt es einegkr
store-Typ, der ein GNU Schlüsselbund Speichern.Ich bin mir nicht sicher, ob dein run Apache Tomcat mit einem OpenJDK oder Sun/Oracle JRE, in dem Fall das format würde nicht unterstützt werden, ohne zusätzliche Sicherheitsleistungen.
Wenn Sie Apache Tomcat mit einer GNU-JRE unterstützt
gkr
(oder mindestens ein JRE, wo Sie Hinzugefügt haben, ein security-Anbieter, unterstütztgkr
), können Sie versuchenkeystoreType="gkr"
in Ihrem<Connector />
Konfiguration.Jedoch, die einfachste ist wohl die Verwendung
keytool
wie von Oracle oder OpenJDK, und verwenden Sie die storetype JKS (das wäre der Standard-Typ wenn Sie Apache Tomcat mit der OpenJDK oder Sun/Oracle JRE). Es war wahrscheinlich installierten JRE, aber es sieht nicht wie der$JAVA_HOME
Sie sind mit einer Punkt-zu einer Oracle oder OpenJDKJAVA_HOME
. Einige Linux-Distributionen haben Mechanismen zu installieren, die mehrere JREs und konfigurieren von links (update-alternatives
im Debian/Ubuntu-Familie).(Als Randbemerkung, es ist in der Regel nicht empfohlen, Apache Tomcat als root, das scheinen Sie zu tun, da
$HOME/.keystore
ist/root/.keystore
in deinem Beispiel.)tomcat
odertomcat6
Benutzer wurde wohl erstellt. Es gibt eine/etc/init.d/tomcat6
Skript, sollten Sie start/stop Tomcat unter diesem Benutzer für Sie./usr/share/doc/tomcat6/README.Debian.gz
sicherlich haben weitere Informationen über diese..crt
Sie haben ausgestellt: Sie können mithilfeopenssl x509 -text -noout -in server.crt
zum Beispiel), oder importieren Sie dieserver.crt
- Datei in Ihrem browser direkt.Als Bruno sagte, benutzte ich die "falsche" keytool!
Gibt es diejenigen, keytools auf meinem Debian 6 installation
Nun nutzte ich
Erstellen der keystore - Datei. Tomcat startet ohne Probleme!
Versuchen Sie, Ihre Speichertyp:
-storetype JKS
(siehe: http://download.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html)Wenn Sie die GNU-jvm und keytool, können Sie die folgenden Optionen, um den Tomcat-connector in server.xml, um get it to work:
keystoreType="gkr" algorithm="JessieX509"
Der Algorithmus wird erwähnt, dass die hier