How can I create a .p12 or .pfx file without a private key?
我正在尝试创建一个不包含有效身份(公钥/私钥对)的.p12文件,以测试我的应用程序的证书导入功能。 使用openssl工具可以做到这一点吗?
我试过了
1
| openssl pkcs12 -in client-certonly.pem -export -out client-certonly.p12 |
但我得到一个错误:
1 2
| unable to load private key
471:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-50/src/crypto/pem/pem_lib.c:648:Expecting: ANY PRIVATE KEY |
如果无法使用openssl进行此操作,是否可以使用其他工具?
有一个非常方便的用Java语言编写的GUI工具,称为portecle,可用于创建空的PKCS#12密钥库,也可以用于将证书导入而无需将私钥导入PKCS#12密钥库-此功能可在" 导入受信任的证书(Ctrl-T)"按钮。
但是,如果您坚持使用OpenSSL,则可以使用以下命令:
1
| openssl pkcs12 -export -nokeys -in certificate.cer -out pkcs12.pfx |
-
谢谢,做到了。您知道是否可以使用openssl进行此操作吗?
-
* 注意!在Windows计算机上,您必须以管理员身份运行open ssl
-
我正在获取unable to load certificates。
-
显然,Java不喜欢此命令生成的格式,因此,如果将它用于Java信任库,则这里是等效的keytool命令:keytool -import -alias mycert -file certificate.cer -keystore truststore.p12 -storetype PKCS12 -storepass password
-
我有和@Ozkan相同的问题,我担心@nerdherd的建议对我没有用...然后,再次,我不确定该命令应该执行的操作。我不需要将我的CER证书导入任何Java信任库中(很抱歉,我不是Java程序员,也没有丝毫知道可能是什么或它位于何处……),而是获得了PKCS# 12档。不过keytool -printcert -file mycert.cer当然可以正常工作-具有预期的结果(即显示我的独立CER证书的内容)。
-
在这种情况下,信任库不可用于Java。 sun.security.pkcs12.KCS12KeyStore要求所有信任证书都具有以下bag属性:{ joint-iso-itu-t(2) country(16) us(840) organization(1) oracle(113894) jdk(746875) crypto(1) id-at-trustedKeyUsage(1)