# CRT 转 PEM 在线转换：.crt、.cer 文件转 PEM

> 在浏览器里把 .crt、.cer 证书文件转成 PEM，自动识别是 DER 二进制还是已经是 PEM，也能处理 PKCS #7 内容。

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

把 .crt 或 .cer 文件转成 PEM，不管里面是 DER 二进制还是 PEM 文本，文件留在你的浏览器里。

CRT 转 PEM 工具把 `.crt` 和 `.cer` 文件转成 PEM。粘贴内容或选择文件，点 **转换**：如果是 DER 就转换，已经是 PEM 就整理干净并按证书链顺序排列。全部在浏览器里完成。

## 为什么 .crt 文件容易出问题

证书的扩展名只是习惯，不代表格式。CA、Windows、Java 工具都会写 `.crt`、`.cer`，有的是 PEM，有的是二进制 DER。Linux 上的服务器要的是 PEM，DER 格式的 `.crt` 会让 Nginx 报 `PEM_read_bio_X509_AUX ... no start line` 之类的错误；宝塔面板和云厂商上传证书时，也会提示证书格式不正确。

## 步骤

1. 选择 `.crt` 或 `.cer` 文件（或粘贴 PEM 文本）。
2. 点 **转换**。
3. 下载 `.pem` 用于服务器配置。如果还有中间证书，放在同一个文件里站点证书的后面。

## 等价的 OpenSSL 命令

```bash
# 先看看是什么格式
openssl x509 -in certificate.crt -noout -subject 2>/dev/null && echo PEM || echo "不是 PEM，试试 DER"
# DER 格式的 .crt 转 PEM
openssl x509 -inform DER -in certificate.crt -out certificate.pem
```

想看证书里的字段，用[证书解析工具](https://ssl.sh/zh/tools/certificate-decoder/)打开。


## FAQ

**直接把 certificate.crt 改名成 certificate.pem 行不行？**

只有它本来就是 PEM 文本（以 -----BEGIN CERTIFICATE----- 开头）时才行。如果是二进制 DER，改名没用，服务器照样加载失败。

**Nginx 报 PEM_read_bio_X509_AUX failed 或 no start line，是这个原因吗？**

经常是。Nginx 读到 DER 文件或带有多余文字的文件时就会报这个错。在这里转换 .crt，再把 ssl_certificate 指向输出的 PEM。

**.crt 里有好几张证书可以吗？**

PEM 格式的话可以。工具会保留全部证书，并按站点证书在前的顺序排列，这正是服务器需要的。
