# SSL 证书格式转换：PEM、DER、PFX、P7B、CRT 互转

> 在浏览器里转换证书格式：PEM 转 DER、DER 转 PEM、PEM 加私钥转 PFX、PFX 转 PEM、P7B 转 PEM、CRT 转 PEM，私钥不上传。

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

在 PEM、DER、PFX/PKCS #12 和 P7B 之间转换证书和私钥。全程在浏览器里完成，私钥不会上传。

证书格式转换工具不用装 OpenSSL，就能把证书和私钥在各种格式之间互转。在顶部选择模式（比如 **PEM 转 PFX**），粘贴内容或选择文件，再下载结果。所有转换都在浏览器里用 JavaScript 完成，证书和私钥不会上传。

## 怎么用

1. 在顶部选择转换方式，每种方式都有单独的说明页，链接在工具上方。
2. 粘贴 PEM 文本或选择文件；PFX 文件要输入密码。
3. 点 **转换**（PEM → PFX 模式下是“生成 PFX”），下载需要的文件。

## 各模式说明

- **PEM 转 DER**：每个 PEM 块（证书、私钥、CSR）各转成一个二进制 `.der` 文件。
- **DER 转 PEM**：二进制证书、私钥、CSR 或 DER 格式的 `.p7b` 转成 PEM 文本。
- **PEM 转 PFX**：把证书、证书链和私钥打包成带密码的 `.pfx`，会检查私钥是否匹配并整理证书链顺序。详见 [PEM 转 PFX](https://ssl.sh/zh/tools/ssl-converter/pem-to-pfx/)。
- **PFX 转 PEM**：把 `.pfx`/`.p12` 拆成 `fullchain.pem`、`cert.pem`、`chain.pem` 和私钥。详见 [PFX 转 PEM](https://ssl.sh/zh/tools/ssl-converter/pfx-to-pem/)。
- **P7B 转 PEM**：从 PKCS #7 证书包里取出证书并按链排序。
- **CRT 转 PEM**：不管 `.crt`/`.cer` 是哪种编码，都转成 PEM。

## 国内常见场景

- 阿里云、腾讯云下载证书时按服务器类型打包：Nginx 包是 `.pem`/`.crt` + `.key`，可以直接用；IIS 包是 `.pfx` + 密码 txt；Tomcat 包是 `.pfx` 或 `.jks` + 密码 txt。手上只有 PFX 但要在 Nginx 或宝塔上用，就用 PFX 转 PEM。
- 宝塔面板需要粘贴“密钥(KEY)”和“证书(PEM格式)”两段文本：分别对应这里输出的私钥和 `fullchain.pem`。
- Windows 服务器（IIS、Exchange、远程桌面）导入证书要 PFX，用 PEM 转 PFX，老版本系统勾选兼容模式。

## 等价的 OpenSSL 命令

```bash
# PEM 转 DER
openssl x509 -in cert.pem -outform DER -out cert.der
# PEM + 私钥 转 PFX
openssl pkcs12 -export -out site.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem
# PFX 转 PEM（OpenSSL 3 读旧版 RC2 加密的文件要加 -legacy）
openssl pkcs12 -in site.pfx -nodes -out all.pem
# P7B 转 PEM
openssl pkcs7 -print_certs -in certs.p7b -out certs.pem
```

## 注意事项

- PFX 里有私钥，一定要设强密码，不用的副本及时删除。
- PFX 转出来的 `privkey.pem` 是不加密的，因为 Web 服务器需要这样，请用文件权限保护好。
- DER 一个文件只能放一个对象，证书链需要多个文件，或者用 PEM/P7B。


## FAQ

**我的服务器需要什么格式？**

Nginx、Apache、HAProxy、宝塔面板和阿里云/腾讯云上传证书都用 PEM（证书 + 私钥）。IIS、Windows、Azure、Exchange 和很多 Java/Tomcat 环境导入 PFX。部分 Windows 和 Java 工具用 P7B 导入不含私钥的证书链。

**把私钥放进在线转换工具安全吗？**

只有在本地转换才安全。这个工具是在你浏览器里运行的 JavaScript：私钥从文本框或文件读入，在内存里转换后直接下载，不会发给 ssl.sh。页面加载完断开网络再操作，同样能用。

**Windows 提示 PFX 密码错误，可密码明明是对的？**

Windows Server 2016 等较老的 Windows 读不了用 AES-256 加 SHA-256 MAC 的 PFX。用兼容模式（3DES + SHA-1）重新生成即可。

**.crt、.cer、.pem 有什么区别？**

只是扩展名不同。.crt 和 .cer 里可能是 PEM 文本也可能是 DER 二进制，用 CRT 转 PEM 模式可以自动识别并输出 PEM。
