证书格式转换

PFX 转 PEM

把 .pfx/.p12 拆成 PEM:站点证书、中间证书链、完整证书链和私钥,可直接用于 Nginx 和宝塔。

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

模式

最后核实

PFX 转 PEM 工具把 PFX/P12 文件拆成 PEM 文件。选择 .pfx 或 .p12 文件,输入密码,点 转换,就能得到 Nginx、Apache 用的 fullchain.pem、单独的站点证书和证书链文件,以及私钥。解密全部在浏览器里完成。

什么时候需要

  • 证书从 Windows/IIS 迁移到 Linux(Nginx、Apache、HAProxy)。
  • 阿里云、腾讯云下载的 IIS 或 Tomcat 格式证书包是 PFX(附一个密码 txt),但你的服务器要 PEM。
  • 宝塔面板要粘贴“密钥(KEY)”和“证书(PEM格式)”:分别填这里输出的私钥和 fullchain.pem。
  • CDN、负载均衡上传证书要求分别填写证书内容和私钥(PEM)。

步骤

  1. 选择 PFX 文件。
  2. 输入密码(云厂商下载包里的 pfx-password.txt、keystorePass.txt 之类的文件里就是密码;导出时没设密码就留空)。
  3. 点 转换,下载需要的文件: - fullchain.pem:站点证书 + 中间证书,用于 Nginx 的 ssl_certificate、Apache 2.4.8+ 的 SSLCertificateFile、宝塔的“证书(PEM格式)”; - cert.pem 和 chain.pem:给要求分开存放的软件; - privkey.pem:PKCS #8 格式的私钥。

等价的 OpenSSL 命令

openssl pkcs12 -in example.pfx -clcerts -nokeys -out cert.pem
openssl pkcs12 -in example.pfx -cacerts -nokeys -out chain.pem
openssl pkcs12 -in example.pfx -nocerts -nodes -out privkey.pem
# OpenSSL 3 读取旧版 RC2 加密的 PFX:每条命令加 -legacy

常见错误

  • 密码错误:MAC 校验没通过。PFX 密码区分大小写,有些工具导出的 PFX 密码为空。
  • 包含根证书:根证书不会放进 chain.pem,服务器不需要发送根证书。
  • 一个文件里有多个私钥:会分别提供,用私钥匹配工具看哪个和证书是一对。

常见问题

OpenSSL 3 报 unsupported,怎么办?

这个 PFX 用的是 RC2-40 加密,OpenSSL 3 只在 legacy provider 里提供。命令里加 -legacy,或者直接用这个工具,它能读 RC2 和 3DES 加密的文件。

导出的私钥是加密的吗?

不是。Nginx 等 Web 服务器需要不加密的私钥文件。请用 chmod 600 限制权限,用完删除临时副本。

PFX 里没有证书链怎么办?

有些导出只包含站点证书。从 CA 下载中间证书,或者用证书链补全工具从线上服务器获取完整证书链。

资料来源

  1. RFC 7292: PKCS #12
  2. OpenSSL pkcs12