Chinaunix首页 | 论坛 | 博客
  • 博客访问: 938951
  • 博文数量: 104
  • 博客积分: 10055
  • 博客等级: 上将
  • 技术积分: 4410
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-11 09:10
文章分类

全部博文(104)

文章存档

2012年(1)

2011年(2)

2010年(8)

2009年(38)

2008年(55)

我的朋友

分类: 系统运维

2009-07-23 15:32:01

用keytool进行签名报“无法从回复中建立链接”是怎么回事
2008-05-26 18:25

更换服务证书的时候遇到这个问题,GOOGLE了一下,发现没答案。

研究了一会会儿,发现问题所在。其实很简单。

深为国内同行们觉得惭愧,不仅是懒,还大多通常不愿意分享自己的知识。GOOGLE技术问题常常会发现,一个中文答案抄来抄去,没人讨论也没人验证。。。或者干脆只有问没有答。。。唉!

企图答案共享,于是把这个问题贴到“百度知道”去了,结果居然发现还不能自问自答,说是有骗积分的嫌疑。。。$!$%%^%!! 谁稀罕那什么破积分啊?

直接在BLOG里写答案~ 啦啦啦~

-------------问题

把CA签名后的server端证书导入keystore出错的问题:
C:\tomcat>keytool -import -alias tomcat -keystore c:\tomcat\keystore -trustcacer
ts -file c:\tomcat\1.cer
输入keystore密码: 123456
keytool错误: java.lang.Exception: 无法从回复中建立链接

-------------答案

在导入服务器证书之前,需要导入一个中级CA根证书。这个CA根证书的有效期很长,一般不用更换。所以大多数人在导入中级CA根证书时会使用旧的证书。

当这个中级CA根证书有更新,导入中级CA根证书步骤仍使用旧的中级CA证书时,此步骤不会报错。但再导入基于新的CA根证书生成的服务器证书,就会报“java.lang.Exception: 无法从回复中建立链接”。

所以,解决问题的方法很简单,下载新的中级CA根证书,删除keystore里已经导入的原来的CA根证书,重新导入新的CA根证书,再导入服务器证书,就没问题了。

解决步骤如下(假设已经导入了旧的CA证书又没有备份原来的keystore):

1、删除旧的CA根证书,假设CA根证书导入时的别名是root。

keytool -delete -alias root -keystore c:\cert\keystore

2、到网站上找到新的CA根证书,COPY内容,PASTE到某个文件中,如 c:\cert\newroot.cer

3、添加新的CA根证书,假设新的CA根证书导入时的别名也为root(名字自定)。

keytool -import -alias root -keystore c:\cert\keystore -file c:\cert\newroot.cer

4、再次导入服务器证书,假设服务器别名是server,颁发的服务器证书贴在server.cer里。

keytool -import -alias server -keystore c:\cert\keystore -trustcacerts -file c:\cert\server.cer

以上步骤都需要输入证书密码,根据自己的实际情况更换证书所在的目录和文件名。

------------- 打完收工~

阅读(1160) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~