Endlich habe ich die Lösung für mein Problem gefunden. Ich werde die Ergebnisse hier posten, falls jemand anders nicht weiterkommt.
Dank an Michael Martin von Michaels Software-Gedanken und -Abschweifungen Das habe ich entdeckt:
keytool verwendet standardmäßig das DSA Algorithmus bei der Erzeugung des selbstsignierten Zertifikats. Frühere Versionen von Firefox akzeptierten diese Schlüssel ohne Problem. Mit Firefox 3 Beta 5 funktioniert die Verwendung von DSA nicht, aber die Verwendung von RSA funktioniert. Die Übergabe von "-keyalg RSA" bei der Erzeugung des selbstsignierten Zertifikats erzeugt ein Zertifikat, das Firefox 3 beta 5 vollständig akzeptiert.
Ich habe einfach dieses Flag gesetzt, alle Caches in FireFox geleert und es funktionierte wie ein Zauber! Ich verwende dies als Test-Setup für mein Projekt und muss dies mit anderen Leuten teilen, also habe ich ein kleines Batch-Skript geschrieben, das zwei SSL-Zertifikate erstellt. Eines kann in das Tomcat-Setup eingefügt werden und das andere ist eine .p12-Datei, die in FireFox/IE importiert werden kann. Vielen Dank!
Verwendung: Das erste Befehlszeilenargument ist der Benutzername des Clients. Alle Passwörter sind "password" (ohne Anführungszeichen). Ändern Sie die hart kodierten Bits nach Ihren Bedürfnissen.
@echo off
if "%1" == "" goto usage
keytool -genkeypair -alias servercert -keyalg RSA -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -keystore server.jks -storepass password
keytool -genkeypair -alias %1 -keystore %1.p12 -storetype pkcs12 -keyalg RSA -dname "CN=%1,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -storepass password
keytool -exportcert -alias %1 -file %1.cer -keystore %1.p12 -storetype pkcs12 -storepass password
keytool -importcert -keystore server.jks -alias %1 -file %1.cer -v -trustcacerts -noprompt -storepass password
keytool -list -v -keystore server.jks -storepass password
del %1.cer
goto end
:usage
echo Need user id as first argument: generate_keystore [username]
goto end
:end
pause
Das Ergebnis sind zwei Dateien. Eine mit dem Namen server.jks, die Sie in Tomcat ablegen, und eine weitere Datei mit dem Namen {username}.p12, die Sie in Ihren Browser importieren. In der Datei server.jks ist das Client-Zertifikat als vertrauenswürdiges Zertifikat hinzugefügt.
Ich hoffe, dass jemand anderes dies nützlich findet.
Und hier ist das XML, das der Tomcat-Datei conf/sever.xml hinzugefügt werden muss (nur mit Tomcat 6.x getestet)
<Connector
clientAuth="true" port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="${catalina.home}/conf/server.jks"
keystoreType="JKS" keystorePass="password"
truststoreFile="${catalina.home}/conf/server.jks"
truststoreType="JKS" truststorePass="password"
SSLVerifyClient="require" SSLEngine="on" SSLVerifyDepth="2" sslProtocol="TLS"
/>
Für Tomcat 7:
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" SSLEnabled="true"
maxThreads="200" scheme="https" secure="true"
keystoreFile="${catalina.base}/conf/server.jks" keystorePass="password"
clientAuth="false" sslProtocol="TLS" />