Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java Security  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 JSSE编程,我的服务器证书不受信任,何以CA签名证书不出来??
wonght





发贴: 8
积分: 1
于 2004-12-22 03:42 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我在作一个双向SSL认证的实验
我希望自己能够自己生成CA并签名服务端和客户端证书
在客户端,我将ca.cer导入IE的受信任的根证书颁发机构,同时将通过CA签名的p12证书导入到个人证书库内
在服务端,我将ca.cer导入到一个证书库并在JavaSSLServer启动的时候,通过运行参数-Djavax.net.ssl.trustStore=caRootTrust.store指定受信任的证书库
同时将通过CA签名的server.cer导入到生成server.key的证书库server.store中

通过浏览器访问https://127.0.0.1 弹出个人证书选择窗口并且有唯一的可选个人证书,确定后,这时候问题出现了,服务器端报告说该CA证书不受信任。
查看证书后发现,该证书是server端的自签名证书,即是server颁发给server的,而不是CA颁发给server的,因为server并不在IE的受信任的根证书颁发机构列表中,
所以会跳出警告窗口。
我想如果server跳出的是经过CA签名的server证书,则没有问题了,可是我不知道为什么服务器会通过server自签名证书来进行SSL会话??
java编程中如何设置才能指定CA签名的server证书进行SSL会话?

另:trustStore的设置显然是有效地,因为在客户端能够找到相应的CA签名的个人证书。

下面是我的server keystore的list,里面明明只有一个自签名的KeyEntry和一个CA签名的trustedCertEntry,何以server不用那个CA签名的trustedCertEntry??

Keystore 类型: jks
Keystore 提供者: SUN

您的 keystore 包含 2 输入

别名名称: http_server
创建日期: 2004-12-21
输入类型:KeyEntry
认证链长度: 1
认证 [1]:
Owner: CN=WangHaiTaoServer, OU=Server, O=Server, L=BeiJing, ST=BeiJing, C=CN
发照者: CN=WangHaiTaoServer, OU=Server, O=Server, L=BeiJing, ST=BeiJing, C=CN
序号: 41c7db71
有效期间: Tue Dec 21 16:14:41 CST 2004 至: Fri Dec 19 16:14:41 CST 2014
认证指纹:
MD5: 64:4F:CF:52:78:C5:3B:62:C3:A3:4A:3F:3CBig SmileF:E6:EA
SHA1: 77:AC:FF:47:56:69:15:FA:0B:A6Big Smile1:A9:63:A9:83:8B:20:1BBig SmileF:48

*******************************************
*******************************************

别名名称: https_server
创建日期: 2004-12-22
输入类型: trustedCertEntry

Owner: CN=WangHaiTaoServer, OU=Server, O=Server, L=BeiJing, ST=BeiJing, C=CN
发照者: CN=WangHaiTaoCA, OU=Tech, O=CA, L=BeiJing, ST=BeiJing, C=CN
序号: f3fa6e9f2300483d
有效期间: Tue Dec 21 16:15:29 CST 2004 至: Fri Dec 19 16:15:29 CST 2014
认证指纹:
MD5: C7:10:CC:37:4D:90:AF:69:78:FF:BE:1E:2F:0B:A6:6C
SHA1: 92:98:5E:1D:C3Big SmileA:6F:62:44:59:E3:7A:6D:BF:28:EE:73:AD:EF:5F

*******************************************
*******************************************

不知道为什么我的IE显示PNG格式图片是XXX?只好重新编辑,用一张JPG的


wonght edited on 2004-12-22 04:07

作者 Re:JSSE编程,我的服务器证书不受信任,何以CA签名证书不出来?? [Re:wonght]
floater

Java Jedi

总版主


发贴: 3233
积分: 421
于 2004-12-22 05:25 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
This is just a warning. If you can get SSL working, that's good.

You need to check your app server document to see where to set the server side cert, apparently, the server is not using the one you are setting to.



"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
- Martin Fowler, Refactoring - Improving the Design of Existing Code
作者 floater,再一次感谢你的帮助 [Re:wonght]
wonght





发贴: 8
积分: 1
于 2004-12-22 21:08 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
因为服务器是我自己写的,所以设置上也只能自己摸索了
不过也有好处就是,可以从代码层面上来摸索^_^
今天把程序改了很多,将server 装载keystore的时候将其可用证书均将其alias打出来,结果发现真的是CA签名过的证书不可用~!
遂寻找server.keystore产生过程中的问题,后来发现唯一和文档《配置Tomcat 4使用SSL》(赵凉)不一致的地方
是在把CA签名后的server端证书导入keystore 之前,我没有把CA根证书导入JDK的默认cacerts中去(为什么没有这样作,后面解释),
我在导入的时,使用的alias名称和生成server端KeyPair时候的alias名称一致的时候,报告错误。
当时年幼懵懂无知,认为文档可能笔误,因此我就改了一个名字,其实就是因为此证书的CA根证书不在受信任的证书库列表中,所以才会报错,也就是这一步铸成大错~!

明白道理之后,于是老老实实将CA导入JDK的默认cacerts中,然后运行keytool再CA签名过的server证书将导入server.keystore,结果显示成功导入~!
看来keytool到如证书的时候,是会到JDK的默认cacerts中进行CA校验的。
这样,在服务器端通过参数-Djavax.net.ssl.trustStore=caRootTrust.store指定受信任的CA证书库
和通过参数-Djavax.net.ssl.keyStore=server.keystore指定服务器端证书库
在客户端,IE如前篇所述设置,一个双向SSL认证的系统终于搭建起来了。
前面提过要解释为什么我非要避免将CA根证书导入JDK的默认cacerts中,我只所以这样作的目的是想使当前这个服务器能够能够在相对比较独立的环境中运行,
希望这个服务器只需要进行简单部署加上一些简单的属性文件配置就能够运行起来了,而不必做过多的系统方面的设置。

正确地keystore的list如下,可以看出来证书链已经形成
Keystore 类型: jks
Keystore 提供者: SUN

您的 keystore 包含 1 输入

别名名称: http_server
创建日期: 2004-12-22
输入类型:KeyEntry
认证链长度: 2
认证 [1]:
Owner: CN=WangHaiTaoServer, OU=Server, O=Server, L=BeiJing, ST=BeiJing, C=CN
发照者: CN=WangHaiTaoCA, OU=Tech, O=CA, L=BeiJing, ST=BeiJing, C=CN
序号: f3fa6e9f2300483d
有效期间: Tue Dec 21 16:15:29 CST 2004 至: Fri Dec 19 16:15:29 CST 2014
认证指纹:
MD5: C7:10:CC:37:4D:90:AF:69:78:FF:BE:1E:2F:0B:A6:6C
SHA1: 92:98:5E:1D:C3Big SmileA:6F:62:44:59:E3:7A:6D:BF:28:EE:73:AD:EF:5F
认证 [2]:
Owner: CN=WangHaiTaoCA, OU=Tech, O=CA, L=BeiJing, ST=BeiJing, C=CN
发照者: CN=WangHaiTaoCA, OU=Tech, O=CA, L=BeiJing, ST=BeiJing, C=CN
序号: ee69d4c35bbfcfd6
有效期间: Tue Dec 21 16:01:07 CST 2004 至: Fri Dec 19 16:01:07 CST 2014
认证指纹:
MD5: 9A:10:93:44:6A:30:07:28:68:47:6C:88:F5:CF:F2:F7
SHA1: 2F:62:31:B4:71:01:E3:EB:7F:27:6D:B0:7E:C5:9F:E0:74:B5:B7Big SmileC

*******************************************
*******************************************


wonght edited on 2004-12-22 21:12

作者 Re:floater,再一次感谢你的帮助 [Re:wonght]
bluepure

pureblue



发贴: 509
积分: 85
于 2004-12-22 22:59 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
那个证书目的是怎么弄的,默认的是列了一大堆,不是只有一项

"保护远程计算机的身份",怎么控制指定的项?

下面是我配置tomcat的ssl,但是客户端证书生成不出来,选择的对话框里时空白的 Sad

配置SSL
参考 http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html
D:\j2sdk1.4.2_06\bin>%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
输入keystore密码: tomcatssl
您的名字与姓氏是什么?
[tomcat5.5.4]: tomcat5.5.4
您的组织单位名称是什么?
[jakarta]: jakarta
您的组织名称是什么?
[apache]: apache
您所在的城市或区域名称是什么?
[hzcity]: hzcity
您所在的州或省份名称是什么?
[gdp]: gdp
该单位的两字母国家代码是什么
[CN]: CN
CN=tomcat5.5.4, OU=jakarta, O=apache, L=hzcity, ST=gdp, C=CN 正确吗?
[否]: y

输入<tomcat>的主密码
(如果和 keystore 密码相同,按回车):

(必须密码一致,因此直接回车)
然后再把userhome(例如:C:\Documents and Settings\Administrator\)下的.keystore复制到
tomcat的conf\目录下。
(例如:D:\jakarta-tomcat-5.5.4\conf\.keystore )
配置jakarta-tomcat-5.5.4\conf\server.xml
加上
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/.keystore"
keystorePass="tomcatssl"> <!--与先前设置的密码一致-->
</Connector>



作者 《配置Tomcat 4使用SSL》 [Re:wonght]
wonght





发贴: 8
积分: 1
于 2004-12-23 00:48 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
keytool是不行的,要openssl
上面提到的这篇文章有详细介绍,google搜一下就能找到




flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923