dav*_*emm 44 ssl tomcat self-signed keytool ssl-certificate
我有一个运行自签名SSL证书的Apache Tomcat 6.x服务器.我希望客户端将自己的证书提供给服务器,以便我可以根据用户数据库对它们进行身份验证.我根据我在网上找到的一个例子来完成所有工作,但是这个例子附带了罐装证书和预构建的JKS数据存储.我想用自己的证书创建自己的数据存储区但是没有运气.
如何为Tomcat创建数据存储区?
如何为Tomcat创建自签名证书?
如何为客户端创建自签名证书?
如何强制Tomcat信任客户端的签名?
我已经玩java keytool了好几个小时了.
dav*_*emm 60
终于得到了我的问题的解决方案,所以我会在这里发布结果,如果其他人卡住了.
感谢Michael的软件思想和Ramblings的迈克尔 ·马丁,我发现:
默认情况下,keytool在生成自签名证书时使用DSA算法.早期版本的Firefox毫无问题地接受了这些密钥.使用Firefox 3 beta 5,使用DSA不起作用,但使用RSA可以.在生成自签名证书时传递"-keyalg RSA"会创建Firefox 3 beta 5完全接受的证书.
我只是设置了那个标志,清除了FireFox中的所有缓存,它就像一个魅力!我使用它作为我的项目的测试设置,我需要与其他人分享,所以我写了一个创建两个SSL证书的小批处理脚本.一个可以放入Tomcat设置,另一个是.p12文件,可以导入到FireFox/IE中.谢谢!
用法:第一个命令行参数是客户端的用户名.所有密码都是"密码"(没有引号).更改任何硬编码位以满足您的需求.
@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
Run Code Online (Sandbox Code Playgroud)
结果是两个文件.一个名为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"
/>
Run Code Online (Sandbox Code Playgroud)
对于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" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58690 次 |
| 最近记录: |