如何创建仅包含私钥/公钥之一的.pfx文件

时间:2014-09-02 06:54:45

标签: ssl certificate openssl

据我所知.pfx文件不需要同时包含公钥和私钥。但是,我找不到如何创建只包含其中一个文件的方法。

我需要这个,因为我正在为.pfx文件编写验证器,我想检查文件是否包含私钥和公钥。出于测试目的,我想创建一些无效的证书。

3 个答案:

答案 0 :(得分:4)

如果不通过PEM,可能会有更短的方法,但我不知道。

将私钥解压缩到PEM:

openssl.exe pkcs12 -in <pfx_file_name>.pfx -nocerts -out private_key.pem

可选,如果您不想在PEM或PFX文件中输入密码:

openssl.exe rsa -in private_key.pem -out private_key.pem

将公钥和私钥解压缩到PEM:

openssl.exe pkcs12 -in <pfx_file_name>.pfx -out public_and_private_key.pem

仅将公钥导出到PFX:

openssl.exe pkcs12 -in public_and_private_key.pem -inkey private_key.pem -export -out public_key.pfx -nokeys

仅将私钥导出到PFX:

openssl.exe pkcs12 -in public_and_private_key.pem -inkey private_key.pem -export -out private_key.pfx -nocerts

答案 1 :(得分:0)

提取私钥:

 Openssl.exe pkcs12 -in <pfx_file_name>.pfx -nocerts -out priv.pem

生成的私钥文件(priv.pem)将受密码保护,以从私钥中删除密码短语。

 Openssl.exe rsa -in priv.pem -out priv.pem

下一步是从pfx文件中提取公钥证书,OPENSSL中有一个直接命令从public key文件中提取pfx证书,但生成的文件将包含公钥证书和其他一些信息。要首先提取公钥证书,我们需要将pfx文件转换为包含private and public key的pem,然后从此pem文件中提取公钥证书:

 openssl.exe pkcs12 -in ClientCert1.pfx -out privpub.pem

生成的pem包含private and public keys,使用以下命令仅提取公钥证书:

 openssl x509 -inform pem -in privpub.pem -pubkey -out pub.pem -outform pem

答案 2 :(得分:0)

如果您尝试从公钥/私钥对创建单个pfx文件,那么我认为此问题与this post重复。

openssl pkcs12 -inkey priv.pem -in pub.cert -export -out pfx_file.pfx

事实证明,我没有足够的声誉来评论,否则我会评论你的帖子,副“回答”。