将 .p7b 密钥转换为 .pfx

DrS*_*ker 11 ssl certificate encryption openssl

我有一个 .p7b 格式的 SSL 证书,我需要将其转换为 .pfx。如果我通过 Windows 证书管理尝试此操作,则专家作为 .pfx 的选项将被禁用。

尝试使用 openssl 我发现以下两个命令可以进行转换:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
Run Code Online (Sandbox Code Playgroud)

但我不确定 esecond 命令使用什么密钥,或者 CACert.cer 指的是什么证书。

如何将此密钥转换为 .pfx 格式?

Hel*_*ick 20

PKCS#7 不包括证书/私钥对的私钥(密钥)部分,它通常用于证书分发(例如作为对 PKCS#10 证书请求的响应,作为分发 S/MIME 证书的一种方式)用于加密消息,或验证签名的消息等)。重要的是要记住,它仅适用于根据定义属于公共项目的证书。

PKCS#12 是一个更通用的容器 - 它旨在将私钥和公共证书部分存储在一起,以便它们可以四处移动。它具有受密码保护的能力,可为密钥提供一些保护。

PFX 是 PKCS#12 的前身。

您不能(正如 Anitak 指出的那样)在没有附加数据(私钥部分)的情况下从 PKCS#7 转换为 PKCS#12,因为 PKCS#7 没有所有数据。

Mark Sutton 指出了您无法导出为 PFX 的原因 - 有问题的证书将其私钥标记为不可导出。加密服务提供程序 (CSP) 不允许移动该密钥,这是有意为之。获得可导出证书\密钥对的唯一*方法是原始证书是在设置了可导出标志的情况下颁发的。也可能没有与证书关联的私钥,但我假设这里不是这种情况。

维基百科上对各种PKCS 类型进行了很好的总结。

  • 至少是唯一合法的方式。根据 CSP\Crypto 硬件,可能存在机制,尤其是仅针对软件 CSP,但仅就我而言,这只是安全漏洞研究的领域,而不是系统管理员。


小智 12

我每两年经历一次(当我更新代码签名证书时),每次都很痛苦。

一个关键信息是您可以简单地将 .p7b 文件重命名为 .spc(如此处所述:http : //support.microsoft.com/kb/269395)。

然后您可以使用 pvk2pfx.exe 工具将您的 PVK + SPC 转换为 PFX。

pvk2pfx.exe -pvk input.pvk -pi <existing_input.pvk_password> -spc input.spc -pfx output.pfx -po <new_output.pfx_password>
Run Code Online (Sandbox Code Playgroud)

(你可以跳过 p7b 重命名步骤直接使用;我没试过...)