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

9

我收到了一份新的证书,格式为crt/cert。当我在文本编辑器中打开这个文件时,他们把完整的证书链添加到了这个文件中。每个证书都以以下方式开始:

-----BEGIN CERTIFICATE-----

并以以下内容结束:

-----END CERTIFICATE-----

在其中没有空行。由于我不熟悉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

I get the following error:

keytool error: java.lang.Exception: Input not an X.509 certificate

当我测试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

或者:

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

有人可以帮我吗?


openssl x509 -in test.p7b -inform DER -text - Camille G.
@CamilleG。更新了问题,附带输出。同时抛出错误。 - Mark Veenstra
1个回答

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

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

openssl x509 -in certificate.pem -outform DER -out certificate.crt

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

cat cert1.crt cert2.crt ... > chain.der

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

keytool -importcert -trustcacerts -alias <myalias> -file chain.der -keystore keystore.jks -storepass <mypassword>

请注意,myalias 必须与生成密钥时使用的别名相同。
4 - 验证链已成功导入。
keytool -list -v -keystore keystore.jks

这个证书不是我们自己的证书,而是从我们的客户那里收到的证书。那我应该问我们的客户他们在创建密钥时使用了哪个别名?而你所说的密钥创建问题是指证书签名请求(CSR)吗? - Mark Veenstra
2
那是我给它起的别名,但那不是在生成密钥时相同的别名。我在这里感到困惑。 - Mark Veenstra
听起来你的密钥库只包含证书而不是对应的私钥。如果是这样,你就不需要密钥条目别名。你可以使用任何别名来指定密钥库中的证书条目。 - gtrig
1
"openssl -in" 命令需要一个 .pem 文件,并且无法处理 .p7b 文件。 - Pavel Laskov
4
我不认为这解决了提问者所询问的问题。这里提供的命令甚至不能用于pb7文件,而这正是第一个问题的重点。 - uh_big_mike_boi
显示剩余2条评论

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