【问题标题】:No certificate matches private key while generating .p12 file生成 .p12 文件时没有证书与私钥匹配
【发布时间】:2013-11-02 08:39:06
【问题描述】:

我已成功生成.p12 文件,但收到一条消息如下:

C:\OpenSSL-Win32\bin>openssl pkcs12 -export -inkey mykey.key -in exported.pem -out myfile.p12

将“屏幕”加载到随机状态 - 完成 没有证书与私钥匹配

谁能告诉我这个错误是怎么回事?

另外,myfile.p12 文件的大小为 0KB,当我尝试打开它时,我在一个带有确定按钮的小窗口中收到以下消息:

`无效的公钥安全对象文件

此文件无效用作以下用途:个人信息交换`

请澄清。

谢谢

【问题讨论】:

  • 我是否需要选择导出到 BASE64 才能按照以下文档工作?markbrilman.nl/2012/07/…
  • 好吧,我确实导出到 BASE64,但仍然遇到同样的错误。仍然想知道可能是什么问题。唯一的区别是证书以 PEM 格式导出。来源:markbrilman.nl/2012/07/…

标签: ssl pkcs#12


【解决方案1】:

我也有完全相同的问题。下面的两个命令就像一个魅力。

cat domain.crt intermediate.crt ca.crt > bundle.crt 

openssl pkcs12 -export -out cert.pfx -inkey key -in bundle.crt

【讨论】:

  • +1 这是对我有用的解决方案,上面的那些没有。我认为这与从 Windows 上的 zip 文件中提取的文件有关,然后从 WSL(Ubuntu)运行 openssl。
  • 没有中间证书怎么办?它会起作用吗?
【解决方案2】:

在我的例子中,我实际上指定了错误的证书——即证书用于一个系统,而私钥用于另一个系统。所以错误消息是正确的!

【讨论】:

    【解决方案3】:

    Source

    当证书是 DER 编码时,OpenSSL 说 没有证书与私钥匹配。只需在创建 PKCS#12 之前将其更改为 PEM 编码即可。

    1. 创建密钥对openssl genrsa -out aps_development.key 2048

    2. 创建企业社会责任openssl req -new -sha256 -key aps_development.key -out aps_development.csr

    3. 上传CSR到开发者门户获取证书aps_development.cer

    4. 转换证书openssl x509 -inform DER -outform PEM -in aps_development.cer -out aps_development.pem

    5. 构建 PKCS#12openssl pkcs12 -inkey aps_development.key -in aps_development.pem -export -out aps_development.p12

    【讨论】:

    • 这行得通,但是一旦我添加了带有更多“-in”参数的中间和根,它就会失败,并显示“没有证书匹配私钥”。但我也需要这些。这肯定有另一个原因。
    • 我发现了我的问题:证书的顺序不正确。不知何故,这很重要,并给您误导性消息没有证书与私钥匹配
    • 找到另一个解决方案:cat domain.crt intermediate.crt ca.crt > bundle.crt openssl pkcs12 -export -out cert.pfx -inkey key -in bundle.crt
    • 完美,tahnksss
    • 在我的情况下正确的顺序/命令如下: Openssl pkcs12 -export -out alwayson.pfx -inkey C:\ssl\private.key -in C:\ssl\ca_bundle.crt -in C:\ssl\certificate.crt 所以,证书之前的中间件和捆绑包。
    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2014-08-19
    • 2022-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多