【问题标题】:Importing Thawte trial certificates into a Java keystore将 Thawte 试用证书导入 Java 密钥库
【发布时间】:2011-02-06 01:19:46
【问题描述】:

我正在尝试使用 SSL 配置 Tomcat 服务器。我因此生成了一个密钥对:

$ keytool -genkeypair -alias tomcat -keyalg RSA -keystore keys

接下来我生成一个证书签名请求:

$ keytool -certreq -keyalg RSA -alias tomcat -keystore keys -file tomcat.csr

然后我将tomcat.csr 的内容复制粘贴到Thawte 网站上的表格中,要求试用SSL 证书。作为回报,我得到两个用-----BEGIN ... -----END 分隔的证书,我保存在tomcat.crtthawte.crt 下。 (Thawte 将第二个证书称为“Thawte Test CA Root”证书)。

当我尝试导入其中任何一个时,它都会失败:

$ keytool -importcert -alias tomcat -file tomcat.crt -keystore keys
Enter keystore password:
keytool error: java.lang.Exception: Failed to establish chain from reply

$ keytool -importcert -alias thawte -file thawtetest.crt -keystore keys
Enter keystore password:
keytool error: java.lang.Exception: Input not an X.509 certificate

-trustcacerts 选项添加到这些命令中的任何一个都不会改变任何内容。

知道我在这里做错了什么吗?

【问题讨论】:

    标签: tomcat ssl pki thawte


    【解决方案1】:

    我终于明白这里发生了什么。事实证明,我从 Thawte 获得的回复格式为 PKCS#7,而 keytool 期望以 X.509 格式进行认证。

    openssl 可用于将证书从一种格式转换为另一种格式:

    $ openssl pkcs7 -in thawtetest.crt -print_certs |
      openssl x509 > thawtetest.x509
    

    现在您可以使用 keytool 导入 thawtetest.x509,并在其后面导入 tomcat.crt

    【讨论】:

    • 谢谢...您会认为他们会在电子邮件中提到这一点...因为中间的(也在电子邮件中)是 x509!
    【解决方案2】:

    您应该能够使用 keytool 导入 PKCS#7 链,只要您使用的是更新的版本。将证书导出到不同的文件中也可以,但如果您运行的是最新版本的 keytool,则导入 PKCS#7 文件本身应该没有问题。

    【讨论】:

      【解决方案3】:

      遇到了同样的麻烦,我找到了this post,它帮助了我。我将收到的试用证书放入一个文件中,并使用 keytool 导入 确保我使用的 ALIAS (keytool -alias param) 不同(即我在创建证书时使用的别名不同请求)。这是一条奇怪的错误消息,因为它根本不喜欢您尝试导入相同的别名。

      【讨论】:

        最近更新 更多