如何在没有私钥的情况下创建.p12或.pfx文件?

Gre*_*reg 22 openssl pkcs#12

我正在尝试创建一个不包含有效身份(公钥/私钥对)的.p12文件,以便测试我的应用程序的证书导入功能.是否可以使用该openssl工具执行此操作?

我试过了

openssl pkcs12 -in client-certonly.pem -export -out client-certonly.p12
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

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
Run Code Online (Sandbox Code Playgroud)

如果无法做到这一点openssl,我可以使用另一种工具吗?

jar*_*riq 40

有一个非常方便的GUI工具,用java编写,名为portecle,可以用来创建一个空的PKCS#12密钥库,也可以用于导入没有私钥的证书进入PKCS#12密钥库 - 这个功能在"导入可信证书(Ctrl-T)"按钮.

但是,如果您坚持使用OpenSSL,则可以使用以下命令:

openssl pkcs12 -export -nokeys -in certificate.cer -out pkcs12.pfx
Run Code Online (Sandbox Code Playgroud)

  • 我'无法加载证书'. (11认同)
  • 显然,Java不喜欢此命令生成的格式,因此,如果将其用于Java信任库,则这里是等效的`keytool`命令:`keytool -import -alias mycert -file certificate.cer -keystore truststore.p12 -storetype PKCS12 -storepass密码` (3认同)
  • 啊,酷。我错过了`-nokeys`参数。谢谢! (2认同)
  • 收到错误:“无法加载证书” (2认同)
  • 虽然此方法有效,但信任库无法与 Java 一起使用。sun.security.pkcs12.KCS12KeyStore 要求所有信任证书具有以下包属性:`{ joint-iso-itu-t(2) Country(16) us(840)organization(1) oracle(113894) jdk(746875)加密(1) id-at-trustedKeyUsage(1)` (2认同)