生成密钥库:
keytool -genkey -alias tomcat -keyalg RSA -keystore my.keystore -keysize 2048
生成证书签名请求(CSR):
keytool -certreq -alias tomcat -keyalg RSA -file my.csr -keystore my.keystore
然后我去我的托管服务提供商并获得一些证书。这些我安装如下:
keytool -import -alias root -keystore my.keystore -trustcacerts -file gd_bundle-g2-g1.crt
keytool -import -alias intermed -keystore my.keystore -trustcacerts -file gdig2.crt
keytool -import -alias tomcat -keystore my.keystore -trustcacerts -file my.crt
当我安装最终证书(my.crt)时,我收到以下错误:
keytool error: java.lang.Exception: Failed to establish chain from reply
我相信我已经按照正确的顺序导入了链条,所以我对此消息非常困惑。谁能看到我做错了什么?
答案 0 :(得分:26)
我刚刚发现godaddy提供的证书都是中间证书(实际上它们似乎都是相同的中间证书)。
我通过双击我的证书并查看证书路径获得了正确的根证书和中间证书...从这里我也可以下载每个证书并使用问题中使用的步骤导入它们
答案 1 :(得分:16)
我在同样的问题上挣扎了大约两个星期,直到找到解决方法。问题是我的Godaddy证书附带的根证书和中间证书不是我需要的证书。我在Godaddy的存储库中多次查看无法找到合适的证书。
我在笔记本电脑上查看了我的证书(使用Windows 8.1)。在那里,我看到了证书链,我能够导出根证书和中间证书。然后我将它们导入我的密钥库,它可以正常工作。
要执行此操作,请按照以下说明操作:
从链中选择根证书,然后单击按钮"查看证书"。
注意: 在我导入这些证书之前,我必须删除我的密钥库中的那些证书并且不能正常工作。为此,我使用了以下说明:
keytool -delete -alias [root] -keystore [keystore file]
如果您不确定keytool中的内容,可以使用以下方式查看:
keytool -list -keystore [keystore file]
答案 2 :(得分:14)
在尝试将CA认证证书导入到Linux环境中的密钥库时,我遇到了同样的错误。
我按照一系列步骤成功导入了它。
收到CA认证证书后,请使用以下步骤将证书导入密钥库。
使用以下命令将根证书导入到cacerts,该文件将在JAVA_HOME / jre / lib / security文件夹中提供:
keytool -importcert -alias root -file [root certificate] -keystore cacerts
输入上述命令后,将提示输入密码,输入密码并单击是。
使用以下命令导入根证书:
keytool -importcert -alias root -file [root certificate] -keystore [keystore file name]
输入上述命令后,将提示输入密码,输入密码并单击是。
使用以下命令导入中间证书:
keytool -importcert -alias intermediate -file [intermediate certificate] -keystore [key store file name]
一旦您输入上述命令,它将提示替换已经存在的证书,输入yes。
注意:中间证书是可选的,可以忽略,它附带根证书。
使用以下命令导入站点证书:
keytool -trustcacerts -importcert -alias [alias name which give during keystore creation] -file [site certificate] -keystore [key store file name]
执行环境此命令是java版本7.证书由GODADDY颁发。
有关详细信息,请参阅网站:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html#importCertCmd
答案 3 :(得分:2)
要解决此问题,请在keytool命令中使用额外的开关( -trustcacerts )。
将中间证书从intermediate.cer文件导入certificate.ks密钥库文件的命令应如下所示:
keytool -storetype JCEKS -storepass passwd -keystore certificates.ks -import -alias intermediate -trustcacerts -file intermediate.cer
将证书从http.cer文件导入certificate.ks密钥库文件的命令应如下所示:
keytool -storetype JCEKS -storepass passwd -keystore certificates.ks -import -alias http -trustcacerts -file http.cer
重新尝试完成签名SSL证书的创建和导入过程。
答案 4 :(得分:1)
下载证书链,在Windows上打开它 - 它存储CA证书和来自CA的证书答案。
首先将CA证书导入您的密钥库,然后从CA导入答案。