.pem
,.cer
和.der
之间有什么区别?
据我所知,.cer
包含公钥。是否有任何开放式框架可用于使用此公钥加密我的数据?
答案 0 :(得分:49)
.pem
,.cer
和.der
都是可能包含X.509 v3证书的文件的文件扩展名。
DER是对构成证书的数据进行编码的方法。 DER本身可以代表任何类型的数据,但通常它描述了编码证书或CMS容器。
使用ASN.1数据表示语言描述证书的结构。 BER和DER是ASN.1描述的数据的二进制编码方法。
.pem
扩展名PEM是一种将二进制数据编码为字符串(ASCII装甲)的方法。它包含页眉和页脚行(指定编码的数据类型,如果数据链接在一起则显示开始/结束),中间的数据是基本64数据。在它对证书进行编码的情况下,它将仅包含DER证书的基本64编码。 PEM代表Privacy Enhanced Mail; mail不能直接包含未编码的二进制值,如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文件还可能包含完整的证书链,其中链以服务的leaf / end证书开头,后跟签名的证书,通常最多但不包括受信任的根证书。因此,如果您缺少证书,您可能需要查看第一个证书。
.cer
或.crt
扩展名 .cer
仅代表证书。它通常是DER编码数据,但Windows也可以接受PEM编码数据。您需要查看内容(例如,在posix系统上使用file
实用程序),以查看文件中的内容是100%确定的。
请查看this answer以获取更详尽的OpenSSL支持列表。
要使用证书中的公共密钥 (并且通过证书中的签名进行签名),您应该使用任何解析X.509证书并执行RSA的库加密。您可以使用检测/处理PEM编码的工具,或者您可以通过剥离PEM编码将证书转换为DER。
OpenSSL命令行包含许多用于在PEM和DER之间进行转换的选项,打印出高级证书信息或解析ASN.1以获得其中的内容的低级视图。
与大多数ASN.1结构一样,DER编码证书始终以字节30
开始,这是ASN.1 SEQUENCE
的标记编码。如果你在文件中看到很多重复,那么这是可以的;它只是严格定义的结构。
同样,PEM编码文件中的基数64总是从字母M
开始,因为ASN.1 SEQUENCE
以字节30
开始,所以前6位是001100
,它转换为数字12,即字母M
的索引,即字母表的第13个字母。