Openssl 创建.p12文件

Openssl 创建.p12文件,openssl,certificate,pkcs#12,Openssl,Certificate,Pkcs#12,使用openssl,我创建了一个私钥,如下所示: openssl genrsa -out myKey.pem 然后,为了生成CA要求的csr,我执行了以下操作: openssl req -new -key myKey.pem -out cert.csr openssl pkcs12 -export -out keyStore.p12 -inkey myKey.pem -in myCert.cer CA用我存储在名为myCert.cer 现在,我想将必要的组件(私钥、公钥(?)和证书)捆绑到

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

openssl genrsa -out myKey.pem
然后,为了生成CA要求的
csr
,我执行了以下操作:

openssl req -new -key myKey.pem -out cert.csr
openssl pkcs12 -export -out keyStore.p12 -inkey myKey.pem -in myCert.cer
CA用我存储在名为
myCert.cer

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

openssl req -new -key myKey.pem -out cert.csr
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

我正在调试使用名为的ORM连接到数据库(MySQL RDS)的SSL时遇到的一个问题。数据库连接字符串需要一个PKCS12(.p12)文件(如果感兴趣,请说明),这使我来到这里

我知道问题已经得到了回答,但我发现以下步骤(在Github中)有助于创建.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


  • 什么是“myKey.pem”?它是哪个文件?那是一个有私钥的文件;请参阅问题的开头。如何创建p12文件的最佳逐步解释。谢谢你!certs.pem包括哪些内容?公钥和私钥?只需证书(公钥)顺便说一句,如果有人想签署自己的
    cert.csr
    openssl x509-req-in-cert.csr-signkey.pem-out cert.crt然后
    openssl pkcs12-export-in-cert.crt-inkey-key.pem-out cert.p12
    。无需使用答案中的附加命令。@Tom谢谢,您的评论解决了我的问题。显然,当它要求您在第四个命令中输入密码时,您应该按字面意思键入“password”,然后再次键入以确认。我一定错过了什么…@KevinBeal据我所知,它请求的密码是用于保护PKCS12文件的密码。您可以创建密码。如果有人想打开并检查PKCS12文件,我相信您需要密码才能访问该文件。如果你指的是这个密码,它根本不起作用。显示密码为“password”。但我对此几乎一无所知。