分类: 系统运维
2009-07-23 15:32:01
更换服务证书的时候遇到这个问题,GOOGLE了一下,发现没答案。 研究了一会会儿,发现问题所在。其实很简单。 深为国内同行们觉得惭愧,不仅是懒,还大多通常不愿意分享自己的知识。GOOGLE技术问题常常会发现,一个中文答案抄来抄去,没人讨论也没人验证。。。或者干脆只有问没有答。。。唉! 企图答案共享,于是把这个问题贴到“百度知道”去了,结果居然发现还不能自问自答,说是有骗积分的嫌疑。。。$!$%%^%!! 谁稀罕那什么破积分啊? 直接在BLOG里写答案~ 啦啦啦~ -------------问题: 把CA签名后的server端证书导入keystore出错的问题: -------------答案: 在导入服务器证书之前,需要导入一个中级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 以上步骤都需要输入证书密码,根据自己的实际情况更换证书所在的目录和文件名。 ------------- 打完收工~ |