【问题标题】:Not able to load P7B file into keystore file无法将 P7B 文件加载到密钥库文件中
【发布时间】:2013-11-07 06:24:13
【问题描述】:

我收到了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

我收到以下错误:

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
  • @CamilleG。用该输出更新问题。也会抛出错误

标签: openssl certificate keystore keytool pkcs#7


【解决方案1】:

导入证书链时,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)?
  • 另外,当我验证时,我得到以下输出:Your keystore contains 1 entry。对吗?
  • 那将是我给它的别名。那将不是生成密钥时相同的别名。我在这里很困惑
  • "openssl -in" 需要一个 .pem 文件并在 .p7b 上引发错误
  • 我不明白这如何解决 OP 提出的问题。这里提供的命令甚至不适用于 pb7 文件,这是第一个问题的重点
猜你喜欢
  • 2012-08-09
  • 1970-01-01
  • 2011-07-20
  • 2014-06-17
  • 1970-01-01
  • 2014-10-13
  • 1970-01-01
  • 2010-12-17
  • 2019-10-12
相关资源
最近更新 更多