# PFX 转 PEM 在线转换：提取私钥、证书和证书链

> 在浏览器里把 .pfx/.p12 转成 PEM：fullchain.pem、cert.pem、chain.pem 和私钥，支持 AES 和旧版 RC2/3DES 加密。

Source: https://ssl.sh/zh/tools/ssl-converter/pfx-to-pem/
Last updated: 2026-11-10

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

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 命令

```bash
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`，服务器不需要发送根证书。
- **一个文件里有多个私钥**：会分别提供，用[私钥匹配工具](https://ssl.sh/zh/tools/key-matcher/)看哪个和证书是一对。


## FAQ

**OpenSSL 3 报 unsupported，怎么办？**

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

**导出的私钥是加密的吗？**

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

**PFX 里没有证书链怎么办？**

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