如何将我的 .spc 和 .pem 文件转换为 .pfx 文件

3
我有一个PKCS#7证书(.spc)和一个.pem文件,我该如何在OpenSSL应用程序上将它们转换为.pfx文件?
谢谢。

Stack Overflow 是一个针对编程和开发问题的网站。这个问题似乎不属于编程或开发范畴。请参阅帮助中心中的我可以在这里问哪些问题。也许超级用户Unix & Linux Stack Exchange是更好的提问场所。 - jww
1个回答

2
首先,文件扩展名没有实际作用,它们通常用于指示文件内容的格式,但没有强制要求。因此,一个名为“something.pem”的文件通常应该包含PEM格式的数据,但完全有可能将该扩展名用于不是PEM格式的文件,并使用其他扩展名来表示PEM格式的文件。
其次,PEM不是单一的格式,而是包括数十种格式的系列,其中约有十几个用于私钥。
如果您有一个.pem文件,实际上是OpenSSL支持的PEM格式之一的私钥,并且PKCS7(.spc)文件包含与该私钥匹配的公钥的证书或链,那么只需获取OpenSSL(因为您标记了它,我假设您已经拥有),然后:
 openssl pkcs7 -in whatever.spc -inform der -print_certs \
 | openssl pkcs12 -export -inkey keyfile.pem -out newfile.pfx 

如果你有一个.pem文件,但它不是与PKCS7证书/链中的公钥匹配的PEM格式私钥,则你没有创建PKCS12/PFX文件所需的数据。

谢谢您的回复,我需要使用CMD以管理员身份打开OpenSSL吗?我需要将我的spc和pem文件放在openssl目录中吗? - user7676403
@NicoTing:OpenSSL在Windows上不需要管理员权限,在Unix上也不需要root权限,除了访问您指定的文件之外,它不需要任何特殊权限。它可以访问您指定路径下的任何文件,只要您有相应的权限。但是,如果您将工作目录设置为OpenSSL安装目录(如果您指定程序路径或设置PATH环境变量,则无需这样做),您可能会发现将文件放在那里很方便。但是,如果您在\Program Files*或\Windows下安装(通常不是默认选项),请不要将数据文件放在那里,以免影响现代Windows上的任何程序。 - dave_thompson_085
我以管理员身份运行CMD,并输入以下命令:cd \ | mkdir certificate | cd certificate | set RANDFILE=c:\certificate.rnd | set OPENSSL_CONF=c:\OpenSSL-Win32\bin\opennssl.cfg | C:\OpenSSL-Win32\bin\openssl.exe我将我的pem和spc文件放在证书文件夹中,但是您的代码无法运行。 - user7676403
@NicoTing:我忘记了CMD部分。在shell上使用反斜杠来继续命令是可行的,但在CMD上不行。要么在一个逻辑行上(使用换行)不使用反斜杠输入,要么使用“帽子”^代替反斜杠。 - dave_thompson_085

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接