使用
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
我怎样才能做到这一点?
openssl
文档表示作为-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
我正在调试使用名为 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
生成适合在 Web 服务器上使用的自签名 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
在一行中,让我们生成它以进行 10 年验证
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 3650 -keyout my.key -out my.pem;openssl pkcs12 -export -out my.p12 -inkey my.key -in my.pem
它将创建一个自签名证书 my.pem,使用 2048 长度的 RSA 密钥进行 3650 天的验证 my.key 输出 my.p12 实用程序文件