证书格式转换

P7B 转 PEM

从 .p7b/.p7c 证书包里取出证书,按站点证书在前的顺序输出 PEM,在浏览器里完成。

浏览器本地运行 私钥在你的浏览器里(WebCrypto)生成和处理,不会离开你的设备,也不会上传到 ssl.sh。

模式

最后核实

P7B 转 PEM 工具从 PKCS #7 证书包里提取全部证书。粘贴 -----BEGIN PKCS7----- 块,或选择 .p7b/.p7c 文件(PEM、DER 都可以),点 转换,就能得到按链排好序的 PEM 证书,可以直接作为完整证书链使用。转换在浏览器里完成。

什么时候需要

  • CA 或代理商发来的是 .p7b,常见于面向 IIS 的下载包。
  • 在 Windows 里导出证书时选了“加密消息语法标准 - PKCS #7”并勾选“包括证书路径中的所有证书”。
  • Java 密钥库或网络设备导出了 .p7c 文件。

步骤

  1. 粘贴 PKCS #7 文本或选择文件。
  2. 点 转换。
  3. 复制 PEM 结果。如果包含根证书而你只需要服务器证书链,把根证书去掉。

等价的 OpenSSL 命令

openssl pkcs7 -print_certs -in certs.p7b -out certs.pem
openssl pkcs7 -inform DER -print_certs -in certs.p7b -out certs.pem   # DER 格式的文件

-print_certs 会在每张证书上方额外输出 subject= 和 issuer= 行,多数服务器会忽略,但宝塔、云控制台等面板可能因此报格式错误,所以这个工具输出的是干净的 PEM。

下一步

Windows 服务器可以用 PEM 转 PFX 把证书链和私钥打包;Nginx、Apache 可以直接用。用证书解析工具核对顺序。

常见问题

P7B 里的私钥在哪?

没有。PKCS #7 证书包从来不含私钥,私钥在生成 CSR 的那台机器上。要做 PFX,把这里得到的 PEM 证书和那个私钥一起用。

为什么证书顺序和文件里不一样?

PKCS #7 里的证书是无序集合,很多文件把根证书放在最前面。服务器必须先发站点证书,所以工具会重新排序。

根证书要保留吗?

配置服务器时不需要,只发站点证书和中间证书。需要把根证书装进信任库时再保留。

资料来源

  1. RFC 5652: CMS
  2. OpenSSL pkcs7