`
kiki1120
  • 浏览: 307549 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

用keytool进行签名报“无法从回复中建立链接”

阅读更多

转自“小小的一亩田”的博客

 

更换服务证书的时候遇到这个问题,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

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

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics