如何将 DER 转换为 PEM
- 把
.der、.cer或.crt文件拖到框中。二进制输入会按字节读取。除了文件,你也可以粘贴单行 Base64 DER,或30 82 01 b7 …这样的 hex。 - 转换为 保持 PEM(64 列)。
- PEM 标签 保持 自动检测。转换器会读取 ASN.1,并写出
CERTIFICATE、CERTIFICATE REQUEST、PUBLIC KEY、PRIVATE KEY等标签。只有当某个工具坚持要特定标签时,才需要自己选择。 - 如有需要,勾选 Windows 换行符(CRLF),然后点击 复制输出 或 下载 .pem。
切换到 检查 可以核对转换的内容:主体、到期时间和指纹都在卡片上。
DER 文件和不带头尾行的 Base64 从哪里来
| 来源 | 得到的内容 |
|---|---|
| Windows 证书导出,选择“DER 编码二进制 X.509 (.CER)” | 二进制 DER |
不带 -rfc 的 Java keytool -exportcert | 二进制 DER |
| 证书中的 CA 颁发者 URL(AIA 扩展) | 通常是 DER 格式的 .cer |
JWK 或 JWKS 中的 x5c | 每张证书一行 Base64 DER |
SAML 元数据中的 <ds:X509Certificate> | Base64 DER,有时带换行 |
| 抓包工具、HSM 和智能卡工具 | hex 转储 |
这些最终都会变成同样的 PEM。一张 443 字节的 DER 证书会变成 656 字节的 PEM:分成十行的 592 个 Base64 字符,加上 BEGIN 和 END 两行。
PEM 格式简介
RFC 7468 描述了解析器所期望的格式,输出也遵循它:
-----BEGIN CERTIFICATE-----
MIIBtzCCAV2gAwIBAgIUfX6gOa1S96OttEsj3WbuIdu0cE0wCgYIKoZIzj0EAwIw
...64 characters per line, the last line shorter...
-----END CERTIFICATE-----
- BEGIN 和 END 中的标签必须完全一致。
- 正文每行是 64 个带
=填充的标准 Base64 字符。使用 URL 安全字母表(-和_)或不带填充的输入也能接受,并会以标准形式写出。 - 一个文件中的多张证书就是把各个块连在一起。
fullchain.pem和 CA 证书包就是这样构成的。要自己制作,先逐一转换每张 DER 证书,再把这些块依次粘贴在一起,叶子证书在前。
用 OpenSSL、Python 和 shell 将 DER 转为 PEM
openssl x509 -inform der -in cert.cer -out cert.pem
openssl pkey -inform der -in key.der -out key.pem
openssl req -inform der -in app.der -out app.csr
如果忘了加 -inform der,较旧的 OpenSSL 版本会报 unable to load certificate;新版本能自己识别 DER。对于 x5c 条目这样的单行 Base64 字符串:
{ echo '-----BEGIN CERTIFICATE-----'; echo "$B64" | fold -w 64; echo '-----END CERTIFICATE-----'; } > cert.pem
Python 内置了这个功能:ssl.DER_cert_to_PEM_cert(open("cert.der", "rb").read())。更多用法见 OpenSSL 和 Python 页面。
常见问题
- “既不是 PEM,也不是有效的 Base64 DER” 或 “第 … 字节处不是有效的 DER/ASN.1”:Base64 已损坏、被截断,或者不是 DER。
.p12或.pfx文件也是 DER,但其内容是加密的,请改用openssl pkcs12转换。 - 标签显示为
DATA:该结构没有被识别为证书、密钥或请求。字节仍然会被转换;如果你知道它是什么,请自己设置标签。 - 文件本来就是 PEM:有些
.cer文件虽然用了这个扩展名,内容却是 PEM。这时输出的是重新换行的同一张证书,无需再做其他转换。证书解码器 可以显示其中的内容。 - 需要反向转换:PEM 转 DER 可以下载
.der,或输出单行 Base64 或 hex。
常见问题
怎么判断我的 .cer 文件是 DER 还是 PEM?
用文本编辑器打开它。能看到可读的 -----BEGIN CERTIFICATE----- 文本就是 PEM;看到无法阅读的二进制内容就是 DER,它的第一个字节是 0x30。在 Linux 和 macOS 上,file 命令会分别输出 PEM certificate 或 Certificate, Version=3。
怎么把 SAML 元数据中的 X509Certificate 值转成 PEM 文件?
把 <ds:X509Certificate> 中的 Base64 文本粘贴到框中。它是不带头尾行的 DER,转换器会加上 -----BEGIN CERTIFICATE-----,按 64 个字符换行,并补上结束行。
能在这里把 DER 私钥转换为 PEM 吗?
能。PKCS#8、PKCS#1 RSA 和 SEC1 EC 密钥都能被识别,并使用对应的标签,例如 PRIVATE KEY 或 EC PRIVATE KEY。转换在本地进行,页面上不会显示密钥的值。
什么时候需要勾选 Windows 换行符(CRLF)?
只有当某个 Windows 工具或严格的解析器拒绝该文件时才需要。大多数软件两种都接受,RFC 7468 也允许 PEM 使用任意一种换行符。