将Thawte试用证书导入Java密钥库

8

我正在尝试配置带有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 测试 CA 根证书”)。
当我尝试导入其中任何一个时,导入失败:
$ 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选项也不会改变任何内容。
你有什么想法,我在这里做错了什么吗?
3个回答

14

我最终理解了这里发生了什么。原来我从Thawte收到的回复是以PKCS#7格式进行格式化的,而keytool需要X.509格式的证书。

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

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

现在你可以使用keytool导入thawtetest.x509,然后紧随其后导入tomcat.crt


谢谢...你会认为他们会在电子邮件中提到这一点...因为中间的一个(也在电子邮件中)是x509! - Nico Huysamen

0

如果你使用较新版本的keytool,应该可以导入PKCS#7证书链。将证书导出为单独的文件也可以实现导入,但是如果使用了keytool的最近版本,导入PKCS#7文件本身应该不会有问题。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接