Finalmente encontré la solución a mi problema, así que publicaré los resultados aquí si alguien más se queda atascado.
Gracias a Michael Martin de Michael's Software Thoughts & Ramblings descubrí que:
herramienta de claves por defecto utiliza el algoritmo DSA al generar el certificado autofirmado.Las versiones anteriores de Firefox aceptaron estas claves sin problema . Con Firefox 3 beta 5, el uso de DSA no funciona, pero el uso de RSA sí lo hace. Al pasar "-keyalg RSA" al generar el certificado autofirmado crea un certificado que acepta completamente Firefox 3 beta 5 .
¡Simplemente puse esa bandera, borré todos los cachés en FireFox y funcionó como un amuleto! Estoy usando esto como una configuración de prueba para mi proyecto y necesito compartir esto con otras personas, así que escribí un pequeño script por lotes que crea dos certificados SSL. Uno se puede soltar en la configuración de Tomcat y el otro es un archivo .p12 que se puede importar a FireFox/IE. ¡Gracias!
Uso: el primer argumento de línea de comandos es el nombre de usuario del cliente. Todas las contraseñas son "contraseña" (sin cotizaciones). Cambie cualquiera de los bits codificados para satisfacer sus necesidades.
@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
Los resultados son dos archivos. Uno llamado server.jks que ingresas en Tomcat y otro archivo llamado {username} .p12 que importas a tu navegador. El archivo server.jks tiene el certificado del cliente agregado como certificado de confianza.
Espero que alguien más lo encuentre útil.
Y aquí es el XML que necesita ser añadido a su archivo de Tomcat conf/sever.xml (sólo probado en el Tomcat 6.x)
<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"
/>
Para 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" />
¡Muchas gracias por esto! He estado jugando con varios "tutoriales" todo el día y este es el primero que realmente funcionó con clientAuth = "true ". –
Esta es una hermosa respuesta. He ahorrado mucho tiempo con el archivo bat. Y lo mejor de todo es que funciona perfectamente. – Yster