无法将P7B文件加载到密钥库文件中

Mar*_*tra 6 openssl certificate keystore keytool pkcs#7

我收到了crt/ cert格式的新证书.当我在文本编辑器中打开此文件时,他们将完整的证书链添加到此文件中.每个证书都以:

-----BEGIN CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

最后是:

-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

中间没有空行.由于我不热衷openssl,我将证书打开到Windows并导出证书,其PKCS#7格式为完整链(test.p7b).当我打开这个文件时,在Windows中看起来都很好,根,中间和证书都在链中.

当我将文件test.p7b放在服务器上并尝试导入时keytool,如下所示:

keytool -import -trustcacerts -alias my.domain.com -keystore my.domain.keystore -keypass changeme -storepass changeme -file test.p7b
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

keytool error: java.lang.Exception: Input not an X.509 certificate
Run Code Online (Sandbox Code Playgroud)

当我测试P7B文件时,我也会收到错误:

bash-4.1$ openssl x509 -in test.p7b -text
unable to load certificate
140009984849736:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:698:Expecting: TRUSTED CERTIFICATE
Run Code Online (Sandbox Code Playgroud)

要么:

bash-4.1$ openssl x509 -in test.p7b -inform DER -text
unable to load certificate
140396587853640:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1320:
140396587853640:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:382:Type=X509_CINF
140396587853640:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:752:Field=cert_info, Type=X509
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

Jcs*_*Jcs 4

导入证书链时,keytool 期望证书以 DER 形式加载。您可以使用 openssl 创建这样的包:

1 - 将所有证书转换为 DER 格式

openssl x509 -in certificate.pem -outform DER -out certificate.crt
Run Code Online (Sandbox Code Playgroud)

2 - 将所有 DER 证书合并到一个文件中

cat cert1.crt cert2.crt ... > chain.der
Run Code Online (Sandbox Code Playgroud)

3 - 现在您可以使用 keytool 将链导入您的密钥库

keytool -importcert -trustcacerts -alias <myalias> -file chain.der -keystore keystore.jks -storepass <mypassword>
Run Code Online (Sandbox Code Playgroud)

请注意,必须与生成密钥时使用的myalias 相同。

4 - 验证链是否已成功导入

keytool -list -v -keystore keystore.jks
Run Code Online (Sandbox Code Playgroud)

  • 我不明白这如何解决OP提出的问题。此处提供的命令甚至不适用于 pb7 文件,这是第一个问题的重点 (4认同)
  • 这就是我给它起的别名。这与生成密钥时的别名不同。我在这里很困惑 (2认同)