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

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

据我所知,.cer包含公钥。有没有开放的框架,我可以用来加密我的数据使用这个公钥?

122297 次浏览

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

.der分机

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

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

.pem分机

PEM 是一种将二进制数据编码为字符串(ASCII 装甲)的方法。它包含一个页眉和一个页脚行(指定编码的数据类型,如果数据链接在一起,则显示 start/end) ,中间的数据是以64为基数的数据。在对证书进行编码的情况下,它只包含 DER 证书的基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 编码的数据。您需要查看文件的内容(例如,在 posx 系统上使用 file实用程序) ,以确定文件中的内容是100% 确定的。

其他 OpenSSL 格式

有关 OpenSSL 支持哪些内容的更详细的列表,请参阅 这个答案


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

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

细节

像大多数 ASN.1结构一样,DER 编码的证书始终以字节 30开始,30是 ASN.1 SEQUENCE的标记编码。如果您在文件中看到了大量的重复,那么这是可以的; 只是严格定义了 结构

同样地,PEM 编码文件中的基64总是以字母 M开始,因为 ASN。1 SEQUENCE以字节 30开始,所以前6位是 001100,翻译过来就是数字12,它是字母 M的索引,字母表中的第13个字母。