.pem
, .cer
and .der
都是可能包含 X.509 v3 证书的文件的文件扩展名。
The .der
扩大
DER 是对构成证书的数据进行编码的方法。 DER本身可以代表any一种数据,但通常它描述编码证书或 CMS 容器。 CMS 在 PKCS#7 中描述(通常存储为.p7
),代表加密消息语法,可用于保护消息并存储证书,以允许接收者在接收者的信任存储中构建到证书的信任路径。
证书的结构使用 ASN.1 数据表示语言进行描述。 BER 和 DER 是 ASN.1 描述的数据的二进制编码方法。
The .pem
扩大
PEM 是一种将二进制数据编码为字符串的方法(也称为 ASCII 装甲)。它包含标题行和页脚行(指定编码的数据类型,如果数据链接在一起则显示开始/结束),中间的数据是 Base 64 数据。如果它对证书进行编码,它将仅包含 DER 证书的 Base 64 编码。 PEM 代表隐私增强邮件;邮件不能直接包含未编码的二进制值,例如 DER。
PEM 还可以编码/保护与证书相关的其他类型的数据,例如公钥/私钥、证书请求等。如果内容是常见的 X509v3 证书,则 PEM 编码为:
-----BEGIN CERTIFICATE-----
... base 64 encoding of the DER encoded certificate
with line endings and padding with equals signs ...
-----END CERTIFICATE-----
请注意,PEM 文件还可能包含完整的证书链,其中该链以服务的叶/结束证书开始,后跟对其进行签名的证书,通常直至但不包括受信任的根证书。因此,如果您丢失了证书,您可能需要查看第一个证书的后面。
The .cer
or .crt
扩大
.cer
只是代表证书。它通常是 DER 编码的数据,但 Windows 也可能接受 PEM 编码的数据。您需要查看内容(例如,使用file
posix 系统上的实用程序)来查看文件中的内容,以 100% 确定。
其他 OpenSSL 格式
看一眼这个答案 https://serverfault.com/questions/9708/what-is-a-pem-file-and-how-does-it-differ-from-other-openssl-generated-key-file有关 OpenSSL 支持的内容的更广泛列表。
使用公钥包含在证书中(和被...签名证书中的签名)您应该使用任何解析 X.509 证书并执行 RSA 加密的库。您可以使用检测/处理 PEM 编码的工具,或者您可以首先通过剥离 PEM 编码将证书转换为 DER。
OpenSSL 命令行包含许多选项,可用于在 PEM 和 DER 之间进行转换、打印高级证书信息或解析 ASN.1 以获取其中内容的低级视图。
Details
与大多数 ASN.1 结构一样,DER 编码的证书始终以一个字节开始30
这是 ASN.1 的标签编码SEQUENCE
。如果您在文件中看到大量重复内容,那么这没有问题;这只是结构这是严格定义的。
同样,PEM 编码文件中的 64 基数始终以字母开头M
作为 ASN.1SEQUENCE
以一个字节开始30
,所以前 6 位是001100
,翻译为数字 12,即字母的索引M
,字母表中的第十三个字母。