0

尝试将证书添加到密钥库,以便我可以在基于 Java 的应用程序中使用它。这对我来说是一个新概念。

我有该站点的 .p7b 证书,并且我整理了一个 keytool 命令。当我输入它时,我被提示指定一个密码,然后我被提示以下错误

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

任何人都可以提供见解吗?

C:\Users\Desktop\>keytool -import -trustcacerts -file "service.site.com - SSL Cert.p7b" -keystore service.site.com.jks
Enter keystore password:
Re-enter new password:
keytool error: java.lang.Exception: Input not an X.509 certificate
4

2 回答 2

1

您可以尝试将密钥转换为 CER (X509),然后尝试导入它:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer

即使我尝试导入 .pem 文件,我也遇到了类似的问题。该文件仅包含人类可读形式的单个证书,并封装在--BEGIN CERTIFICATE--和--END CERTIFICATE--中。在 java 7 (patch 71) 中,keytool 无法解析此类文件并抛出与您相同的错误。一旦我删除了文件的文本部分:

Certificate:
Data:
    Version: 3 (0x2)
    Serial Number: 11864724255945479761 (0xa4a7f7d949c31d11)
Signature Algorithm: sha1WithRSAEncryption
    Issuer: C=COM, ST=CA, O=Company, OU=ORG, CN=ORG/emailAddress=admin@company.org
    Validity
        Not Before: Jan  5 15:30:35 2015 GMT
        Not After : Jan  2 15:30:35 2025 GMT

对我来说没问题。

还请查看以下文章(https://myonlineusb.wordpress.com/2011/06/19/what-are-the-differences-between-pem-der-p7bpkcs7-pfxpkcs12-certificates/),因为它解释各种格式之间的差异并提供如何从一种格式转换为另一种格式的命令

于 2015-01-19T14:19:14.620 回答
0

使用 keytool 导入证书时,我遇到了同样的错误。从 Java 6 版本开始,keytool 增加了一项增强功能:即 keytool 可以合并和导入PKCS12 格式的密钥库。我同意 tazarov 的回答,您需要转换 PKCS#7 或 P7B 格式(基本上以 Base64 ASCII 格式存储,文件扩展名为 .p7b 或 .p7c)。

在跳入解决方案之前,我认为澄清一些概念是值得的。我将引用一本优秀书籍中的以下概念:Ivan Ristić 的防弹 SSL 和 TLS 版权所有 © 2015 Feisty Duck Limited。版权所有。

PKCS#7 证书 为传输签名或加密数据而设计的一种复杂格式,在 RFC 2315 中定义。通常使用 .p7b 和 .p7c 扩展名,并且可以根据需要包含整个证书链。Java 的 keytool 实用程序支持这种格式。

二进制 (DER) 证书 包含原始形式的 X.509 证书,使用 DER ASN.1 编码。

ASCII (PEM) 证书包含 base64 编码的 DER 证书,其中 -----BEGIN CERTIFICATE----- 用作页眉, -----END CERTIFICATE----- 作为页脚。通常每个文件只有一个证书,但有些程序根据上下文允许多个证书。例如,Apache Web 服务器要求服务器证书单独在一个文件中,所有中间证书一起在另一个文件中。

解决方案

获取和转换:

 openssl s_client -showcerts -connect "service.site.com - SSL Cert.p7b":443 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem

希望能帮助到你!

于 2019-02-07T11:05:45.270 回答