如何在没有私钥的情况下创建 .p12 或 .pfx 文件?
Posted
技术标签:
【中文标题】如何在没有私钥的情况下创建 .p12 或 .pfx 文件?【英文标题】:How can I create a .p12 or .pfx file without a private key? 【发布时间】:2014-07-19 02:31:30 【问题描述】:我正在尝试创建一个不包含有效身份(公钥/私钥对)的 .p12 文件,以测试我的应用的证书导入功能。使用openssl
工具可以做到这一点吗?
我试过了
openssl pkcs12 -in client-certonly.pem -export -out client-certonly.p12
但我得到一个错误:
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
无法做到这一点,我可以使用其他工具吗?
【问题讨论】:
【参考方案1】:有一个用 java 编写的非常方便的 GUI 工具,名为 portecle,您可以使用它来创建一个空的 PKCS#12 密钥库,也可以将没有私钥的证书导入 PKCS#12 密钥库 - 这个功能在“导入受信任的证书 (Ctrl-T)”按钮下可用。
但是如果你坚持使用 OpenSSL,你可以使用这个命令:
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
虽然这可行,但信任库无法与 Java 一起使用。 sun.security.pkcs12.KCS12KeyStore 要求所有信任证书具有以下包属性: joint-iso-itu-t(2) country(16) us(840) organization(1) oracle(113894) jdk(746875) crypto(1) id-at-trustedKeyUsage(1)
【参考方案2】:
对于遇到问题并收到错误消息“无法加载证书”的任何人,请尝试以下方法:
openssl.exe x509 -inform der -in "C:\Temp\myfile.cer" -out "c:\Temp\myfile.pem"
openssl.exe pkcs12 -export -out "c:\Temp\myfile.pfx" -nokeys -in "c:\Temp\myfile.pem"
【讨论】:
以上是关于如何在没有私钥的情况下创建 .p12 或 .pfx 文件?的主要内容,如果未能解决你的问题,请参考以下文章