【问题标题】:Creating a .p12 file创建 .p12 文件
【发布时间】:2014-02-04 03:30:04
【问题描述】:

使用openssl,我创建了一个私钥,如下所示:

openssl genrsa -out myKey.pem

然后,为了生成 CA 要求的 csr,我执行了以下操作:

openssl req -new -key myKey.pem -out cert.csr

CA 以我存储在名为 myCert.cer 的文件中的证书作为响应

我现在想将必要的组件(私钥、公钥(?)和证书)捆绑到一个 .p12 中。为此,我运行了以下命令:

openssl pkcs12 -export -out keyStore.p12 -inkey myKey.pem -in myCert.cer

但我收到以下错误消息:

No certificate matches private key

我怎样才能做到这一点?

【问题讨论】:

  • 顺便说一句,如果有人想自己签名cert.csr,那么可以使用openssl x509 -req -in cert.csr -signkey key.pem -out cert.crt,然后使用openssl pkcs12 -export -in cert.crt -inkey key.pem -out cert.p12。无需使用答案中的附加命令。

标签: openssl certificate pkcs#12


【解决方案1】:

openssl documentation 表示作为 -in 参数提供的文件必须是 PEM 格式。

事实证明,与 CA 的手册相反,我存储在 myCert.cer 中的 CA 返回的证书不是 PEM 格式,而是 PKCS7

为了创建我的.p12,我必须先将证书转换为PEM

openssl pkcs7 -in myCert.cer -print_certs -out certs.pem

然后执行

openssl pkcs12 -export -out keyStore.p12 -inkey myKey.pem -in certs.pem

【讨论】:

  • 什么是“myKey.pem”?是哪个文件?
  • 那个是有私钥的;请参阅问题的开头。
  • 最好的逐步解释如何创建一个 p12 文件。谢谢!
  • certs.pem 包括什么?公钥和私钥?
  • 只是证书(公钥)
【解决方案2】:

我正在调试一个使用名为Prisma 的 ORM 连接到数据库 (MySQL RDS) 的 SSL 问题。数据库连接字符串需要一个 PKCS12 (.p12) 文件(如果有兴趣,描述here),它把我带到了这里。

我知道问题已得到解答,但我发现以下步骤(在 Github Issue#2676 中)有助于创建 .p12 文件并希望分享。祝你好运!

  1. 生成 2048 位 RSA 私钥:

    openssl genrsa -out key.pem 2048

  2. 生成证书签名请求:

    openssl req -new -sha256 -key key.pem -out csr.csr

  3. 生成适合在 Web 服务器上使用的自签名 x509 证书。

    openssl req -x509 -sha256 -days 365 -key key.pem -in csr.csr -out certificate.pem

  4. 在 PKCS12 中创建 SSL 身份文件,如此处所述

    openssl pkcs12 -export -out client-identity.p12 -inkey key.pem -in certificate.pem

【讨论】:

  • 显然,当它要求您在第四个命令中输入密码时,您应该按字面意思输入“密码”,然后再次输入确认。我一定是错过了什么......
  • @KevinBeal 据我了解,它请求的密码是用于保护 PKCS12 文件的密码。您可以创建密码。如果有人想打开并检查 PKCS12 文件,我相信您需要密码才能访问该文件。
  • 在第 3 步中,我可以选择密码。如果那是您所指的密码,那它根本不起作用。 This link 似乎显示密码是“密码”。但我对此几乎一无所知。
猜你喜欢
  • 2016-09-30
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 2017-11-22
相关资源
最近更新 更多