我收到了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
有人能帮助我吗?
答案 0 :(得分:4)
导入证书链时,keytool希望以DER格式加载证书。您可以使用openssl创建这样的包:
1 - 以DER格式转换所有证书
openssl x509 -in certificate.pem -outform DER -out certificate.crt
2 - 将所有DER证书Concat分成一个文件
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