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

lin*_*lof 8 ssl tomcat pki thawte

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

$ keytool -genkeypair -alias tomcat -keyalg RSA -keystore keys
Run Code Online (Sandbox Code Playgroud)

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

$ keytool -certreq -keyalg RSA -alias tomcat -keystore keys -file tomcat.csr
Run Code Online (Sandbox Code Playgroud)

然后我将内容复制粘贴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
Run Code Online (Sandbox Code Playgroud)

-trustcacerts选项添加到这些命令之一也不会改变任何内容.

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

lin*_*lof 14

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

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

$ openssl pkcs7 -in thawtetest.crt -print_certs |
  openssl x509 > thawtetest.x509
Run Code Online (Sandbox Code Playgroud)

现在您可以thawtetest.x509使用keytool 导入,紧接着tomcat.crt它.