CRT 文件 (.crt / .cer 证书文件)
定义
CRT 文件是存放 X.509 证书的 .crt 或 .cer 文件,内容可能是 PEM 文本,也可能是二进制 DER,取决于生成它的平台。
.crt 或 .cer 文件里装的是公开的 X.509 证书,不包含私钥。两个扩展名都只是命名习惯而不是格式:在 Linux 和大多数 Web 服务器文档里,.crt 通常是以 -----BEGIN CERTIFICATE----- 开头的 PEM 文本;Windows 习惯用 .cer,证书导出向导里可以选"DER 编码二进制 X.509 (.CER)"或"Base64 编码 X.509 (.CER)",前者就是 DER。在 Windows 上双击这两种文件都会打开证书查看器。
为什么重要
编码不对时,工具往往只报一个含糊的错误,比如 OpenSSL 提示无法加载证书,其实只是文件是 DER 格式。.crt 也可能只包含站点证书本身,所以 nginx 需要把中间证书拼接进去的 fullchain 文件。腾讯云下载包中名为 xxx_bundle.crt 的文件通常已经包含了中间证书。看一眼文件开头就能判断编码,数一数 BEGIN 行就知道里面有几张证书。
例子
head -c 30 example.com.cer; echo # PEM 以 -----BEGIN CERTIFICATE----- 开头
openssl x509 -in example.com.cer -inform DER -noout -subject -enddate
openssl x509 -in example.com.cer -inform DER -out example.com.crt # DER 转 PEM
grep -c "BEGIN CERTIFICATE" example.com.crt # 文件里有几张证书
常见误区
- .crt 和 .cer 是两种格式。 两者都可能是 PEM 或 DER,只看内容。
- .crt 文件里带私钥。 证书是公开的,私钥在单独的 .key 文件或 PKCS #12 容器里。
- 一个 .crt 文件就是一张证书。 PEM 文件可以依次存放多张证书,比如 CA 证书包或完整证书链。