创建.p12文件

时间:2014-01-15 15:18:03

标签: openssl certificate pkcs#12

使用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

我该如何做到这一点?

2 个答案:

答案 0 :(得分:42)

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

答案 1 :(得分:9)

我正在调试使用名为 Prisma 的 ORM 将 SSL 连接到数据库 (MySQL RDS) 时遇到的问题。数据库连接字符串需要一个 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. 生成适用于网络服务器的自签名 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