1

我有一个 .pem 文件和一个 .pub 文件,我使用以下命令来创建它们

openssl genrsa -out temp.pem 1024
openssl rsa -in temp.pem -pubout -out temp.pub

现在我想将它们制作成一个 .pfx 文件,该文件是二进制文件,包含私钥和公钥。是否可以?如何?(我已经测试了 som openssl 命令,但文件为空)。

我用了这个命令

 openssl pkcs12 -export -in temp.pem -inkey temp.pub -out temp.pfx -name "Temp Certificate"

它会产生此错误:

无法加载私钥 17880:error:0906D06C:PEM 例程:PEM_read_bio:no start line:.\crypto\pem\pem_li bc:703:Expecting: ANY PRIVATE KEY

4

2 回答 2

4

您收到错误是因为,对于-inkey参数,您必须指定私钥;不是公钥。

OpenSSL 的 pkcs12 命令不提供将公钥和私钥合并到单个文件中的方法。它专门用于将证书和私钥合并到一个文件中。在上述情况下,您拥有的是公钥,而不是证书。

从手册页:

-in filename The filename to read certificates and private keys from, standard input by default. They must all be in PEM format. The order doesn't matter but one private key and its corresponding certificate should be present. If additional certificates are present they will also be included in the PKCS#12 file.

请注意,它特别提到应该存在一个私钥及其相应的证书。我通常用来生成 PKCS#12 文件的命令是:

openssl pkcs12 -export -in cert.pem -inkey private.key -out file.pfx -name "My Certificate"

于 2013-09-27T14:43:15.980 回答
1

我偶然发现了这一点,并注意到上述接受的答案并没有真正提供解决方案。

基本上,您需要使用如下命令从私钥生成 [自签名] 证书:

openssl req \
   -key domain.key \
   -new \
   -x509 -days 365 -out domain.crt

您可以使用 openssl 命令将您的私钥 PEM 转换为 .KEY 文件。

从那里您可以使用 openssl 命令将您的密钥和证书转换为 pfx:

openssl pkcs12 -export -out domain.pfx -inkey domain.key -in domain.crt
于 2019-11-15T10:19:10.707 回答