如何创建仅包含私钥/公钥之一的 .pfx 文件
Posted
技术标签:
【中文标题】如何创建仅包含私钥/公钥之一的 .pfx 文件【英文标题】:How to create .pfx file containing only one of private/public key 【发布时间】:2014-10-26 20:20:25 【问题描述】:据我所知,.pfx 文件不需要同时包含公钥和私钥。但是,我找不到一种方法来创建一个只包含其中一个的文件。
我需要这个,因为我正在为 .pfx 文件编写验证器,并且我想检查该文件是否同时包含私钥和公钥。出于测试目的,我想创建一些无效的证书。
【问题讨论】:
【参考方案1】:可能有更短的方法可以在不通过 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
【讨论】:
我已经快速测试了它,它似乎很有效【参考方案2】:提取私钥:
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
中有一个直接命令可以从pfx
文件中提取public key
证书,但生成的文件将包含公钥证书和其他一些信息。要仅提取公钥证书,首先我们需要将 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
【讨论】:
我实际上需要它。我已经有单独的私钥和公钥。我需要仅从私钥或公钥创建 .pfx 证书。【参考方案3】:如果您尝试从公钥/私钥对创建单个 pfx 文件,那么我认为这个问题与this post 重复。
openssl pkcs12 -inkey priv.pem -in pub.cert -export -out pfx_file.pfx
事实证明,我没有足够的声誉来发表评论,否则我会评论你的帖子,而不是“回答”。
【讨论】:
不,我不想那样做。请再次阅读我的问题。以上是关于如何创建仅包含私钥/公钥之一的 .pfx 文件的主要内容,如果未能解决你的问题,请参考以下文章