.pem,.cer和.der有什么区别?


84

之间有什么区别.pem.cer.der

据我所知,.cer包含公钥。我是否可以使用任何开放框架使用此公钥加密数据?


2
我认为它们都是可以存储任何密钥的文件格式;有些工具可以在它们之间自由转换。
IMSoP 2014年

1
@IMSoP对,您是对的,但是对于.cer以.der的cp命令而言,它可以这样做:)
Maarten Bodewes 2014年

我已经删除了iOS的特定部分,似乎有到这里来了很多例子,比如这一个这另一个使用。质子交换膜。
Maarten Bodewes

Answers:


88

.pem.cer并且.der是可能包含X.509 v3证书的文件的所有文件扩展名。

.der扩展

DER是对构成证书的数据进行编码的方法。DER本身可以表示任何类型的数据,但是通常它描述编码的证书或CMS容器。

证书的结构使用ASN.1数据表示语言进行描述。BER和DER是ASN.1描述的数据的二进制编码方法。

.pem扩展

PEM是一种将二进制数据编码为字符串(ASCII铠装)的方法。它包含一个页眉和页脚行(指定编码的数据类型,并在数据链接在一起时显示开始/结束),中间的数据为基数为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文件还可能包含完整的证书链,其中该链以服务的叶/结束证书开头,然后是对该服务进行签名的证书,通常最多但不包括受信任的根证书。因此,如果您缺少证书,则可能需要查看第一个证书。

.cer.crt扩展

.cer只是代表证书。它通常是DER编码的数据,但Windows也可以接受PEM编码的数据。您需要查看内容(例如,使用fileposix系统上的实用程序),以确保文件中的内容具有100%的确定性。

其他OpenSSL格式

查看此答案,以获取更多有关OpenSSL支持的内容的列表。


要使用证书中包含的公共密钥(并由证书中的签名签名),您应该使用任何解析X.509证书并执行RSA加密的库。您可以使用检测/处理PEM编码的工具,也可以先通过剥离PEM编码将证书转换为DER。

OpenSSL命令行包含许多选项,可在PEM和DER之间进行转换,打印出高级证书信息或解析ASN.1以获取其中的内容的低级视图。

细节

像大多数ASN.1结构一样,DER编码的证书始终以一个字节开始,该字节30是ASN.1的标签编码SEQUENCE。如果您在文件中看到很多重复,那就没关系;只是严格定义的结构

同样,PEM编码文件中的基数64始终以字母开头M,而ASN.1SEQUENCE则以字节开头30,因此前6位是001100,它转换为数字12,即字母的索引M,即字母表的第十三个字母。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.