使用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
我该如何做到这一点?
答案 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 文件很有帮助,并希望分享。祝你好运!
生成 2048 位 RSA 私钥:
openssl genrsa -out key.pem 2048
生成证书签名请求:
openssl req -new -sha256 -key key.pem -out csr.csr
生成适用于网络服务器的自签名 x509 证书。
openssl req -x509 -sha256 -days 365 -key key.pem -in csr.csr -out certificate.pem
在此处提到的 PKCS12 中创建 SSL 身份文件
openssl pkcs12 -export -out client-identity.p12 -inkey key.pem -in certificate.pem