据我所知.pfx文件不需要同时包含公钥和私钥。但是,我找不到如何创建只包含其中一个文件的方法。
我需要这个,因为我正在为.pfx文件编写验证器,我想检查文件是否包含私钥和公钥。出于测试目的,我想创建一些无效的证书。
答案 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
事实证明,我没有足够的声誉来评论,否则我会评论你的帖子,副“回答”。