终于找到了我的问题的解决方案,所以如果其他人遇到困难,我会将结果发布在这里。
感谢迈克尔·马丁迈克尔的软件想法和漫谈我发现:
keytool 默认使用 DSA
生成时的算法
自签名证书。早期版本
Firefox 无需任何操作即可接受这些密钥
问题。在 Firefox 3 beta 5 中,使用
DSA 不起作用,但使用 RSA 可以。
生成时传递“-keyalg RSA”
自签名证书创建一个
完全认证 Firefox 3 beta 5
接受。
我只是设置了该标志,清除了 FireFox 中的所有缓存,它就像一个魅力!我使用它作为我的项目的测试设置,并且需要与其他人共享它,因此我编写了一个小批处理脚本来创建两个 SSL 证书。一个可以放入 Tomcat 安装程序中,另一个是可以导入到 FireFox/IE 中的 .p12 文件。谢谢!
用法:第一个命令行参数是客户端的用户名。所有密码均为“password”(不带引号)。更改任何硬编码位以满足您的需求。
@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
结果是两个文件。一个名为 server.jks 的文件可放入 Tomcat 中,另一个名为 {username}.p12 的文件可导入浏览器中。 server.jks 文件将客户端证书添加为可信证书。
我希望其他人发现这很有用。
这是需要添加到 Tomcat conf/sever.xml 文件中的 XML(仅在 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"
/>
对于 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" />