【发布时间】:2013-04-10 08:02:55
【问题描述】:
我有证书链文件 - certificate.cer:
subject=/C...
issuer=/C=US/O=VeriSign, Inc...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
subject=/C=US/O=VeriSign, Inc...
issuer=/C=US/O=VeriSign, Inc...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
subject=/C=US/O=VeriSign, Inc...
issuer=/C=US/O=VeriSign, Inc...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
我需要将此证书链添加到密钥库。
我做什么:
openssl x509 -outform der -in certificate.cer -out cert.der
keytool -v -importcert -alias mykey -file cert.der -keypass <passwd> -keystore keystore -storepass <passwd> -alias <myalias>
结果我在密钥库中只有 1 个证书。
但是应该有3个。
有什么问题?
解决方案:
CA 向我发送了 PKCS#7 格式的证书。
我将它们存储在 certificate.p7b 文件中,然后通过以下命令成功将它们添加到密钥库:
keytool -import -trustcacerts -file certificate.p7b -keystore keystore -storepass <mypasswd> -alias "myalias"
【问题讨论】:
-
使用了哪个版本的 KeyTool?
6-b14版本无法导入证书链因为:// we can only store one user cert per identity.看源码:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/security/tools/KeyTool.java#KeyTool.doImportIdentityDatabase%28java.io.InputStream%29 -
想为后代添加我的场景。在尝试将证书安装到 WildFly 16 的密钥库中时偶然发现了这篇文章。我的 CA 给了我 2 个 .cer 文件和一个 .p7b 链文件。我错误地首先导入了一个 .cer 文件,并且使用了错误的别名,因此我收到了不受信任的证书错误。为了解决这个问题,我删除了我导入的 .cer 记录,并使用与私钥相同的别名导入了 .p7b 文件。像魅力一样工作!
-
根据我的经验,关注了许多不同的在线帖子,演示了将可信证书的 PEM 链导入 JKS 密钥库的各种方法,无论有多少证书捆绑在 .p7b 或 .pem 中文件,它只是
keytoolimport 命令添加到密钥库文件的最上面的一个。
标签: java openssl certificate keystore keytool