之间有什么区别.pem
,.cer
和.der
?
据我所知,.cer
包含公钥。我是否可以使用任何开放框架使用此公钥加密数据?
之间有什么区别.pem
,.cer
和.der
?
据我所知,.cer
包含公钥。我是否可以使用任何开放框架使用此公钥加密数据?
cp
命令而言,它可以这样做:)
Answers:
.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编码的数据。您需要查看内容(例如,使用file
posix系统上的实用程序),以确保文件中的内容具有100%的确定性。
查看此答案,以获取更多有关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
,即字母表的第十三个字母。