Chinaunix首页 | 论坛 | 博客
  • 博客访问: 848358
  • 博文数量: 12
  • 博客积分: 10026
  • 博客等级: 上将
  • 技术积分: 2245
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-04 20:15
文章分类

全部博文(12)

文章存档

2010年(2)

2009年(10)

我的朋友

分类: Java

2009-08-17 15:33:04


我说下我的整个过程,看看在哪里还是有错。

1.生成CA证书。目前不使用第三方权威机构的CA来认证,自己充当CA的角色。
1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out root/root-key.pem 1024
2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out root/root-req.csr -key root/root-key.pem
3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in root/root-req.csr -out root/root-cert.pem -signkey root/root-key.pem -days 3650
4.将证书导出成浏览器支持的.p12格式(导出密码123456):C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in root/root-cert.pem -inkey root/root-key.pem -out root/root.p12
2.生成server证书。
1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out server/server-key.pem 1024
2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out server/server-req.csr -key server/server-key.pem
3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650
4.将证书导出成浏览器支持的.p12格式 (导出密码123456):C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12 
3.生成client证书。
1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out client/client-key.pem 1024
2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out client/client-req.csr -key client/client-key.pem
3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650
4.将证书导出成浏览器支持的.p12格式(导出密码123456):C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12
4.根据root证书生成jks文件
C:\OpenSSL\apps\keytool -import -v -trustcacerts -storepass ximencf -alias root -file root/root-cert.pem -keystore root.jks

sslenabled="true" maxhttpheadersize="8192" maxthreads="150"
minsparethreads="25" maxsparethreads="75" enablelookups="false"
disableuploadtimeout="true" acceptcount="100" sslprotocol="TLS"
clientauth="true" keystorefile="server.p12"
keystoretype="PKCS12" keystorepass="123456" truststorefile="root.jks"
truststoretype="JKS" truststorepass="123456"/>

root.p12,client.p12分别导入到IE中

这样子,在启动tomcat的时候就会报invlidate keystore format错误,即认为keystore的类型是不正确,我已经指定了其为PKCS12类型的啊,同时,我也希望实现双向认证。


你的过程基本上没有问题,虽然有些地方不是必要的。但是本来应该成功的。你之所以没有成功,应该有以下几点你需要注意的:

1. 第一个问题,
引用
4.根据root证书生成jks文件
C:\OpenSSL\apps\keytool -import -v -trustcacerts -storepass ximencf -alias root -file root/root-cert.pem -keystore root.jks
你这里生成jks时用的storepass口令是ximencf, 而且配置tomcat的时候,你用的是什么?是123456。

2. xml文件是区分大小写的,你写在server.xml里的内容有些是通过MBean赋值到tomcat的javabean里的,如果你大小写搞错了,他 也无法认识。举例:如keystoreFile如果你写成keystorefile, tomcat就不知道这个文件在哪里,因为你指定的文件路径并没有通过MBean赋值到Tomcat里的javabean。当然,这很有可能是你的拷贝的 时候或者javaeye的editor的问题,我只是说一下,防止以后还有人犯这样的错误。

3. 最后一点就是文件的路径,如果像你那样没有指定路径的话,tomcat会到根目录下去找文件,如果文件不是放在根目录下,也是找不到的。

希望你这次成功。
阅读(1989) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~