【问题标题】:How can I create a .p12 or .pfx file without a private key?如何在没有私钥的情况下创建 .p12 或 .pfx 文件?
【发布时间】: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 无法做到这一点,我可以使用其他工具吗?

【问题讨论】:

    标签: openssl pkcs#12


    【解决方案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"
    

    【讨论】:

      猜你喜欢
      • 2017-05-01
      • 2019-07-28
      • 1970-01-01
      • 2011-09-12
      • 2017-12-03
      • 1970-01-01
      • 2020-06-30
      • 2012-09-07
      • 2014-10-26
      相关资源
      最近更新 更多