前言

.der

DER是一种编码方法,本身可以表示任何类型的数据,但通常用来编码证书。证书的结构使用ASN.1(Abstract Syntax Notation One 一种数据描述语言)描述。
BER和DER都是二进制编码方法。

.pem

PEM是一种将二进制数据编码为字符串的方法。它包含header和footer,用来指定数据的开始和结束,header和footer中间是base64数据。如果数据是证书,那么会简单的编码DER证书。PEM代表Privacy Enhanced Mail;PEM格式如下

-----BEGIN <whatever>----- 
data
 -----END <whatever>----

whatever可以是private keys, public keys, X509 certificates,比如

-----BEGIN CERTIFICATE-----
... base 64 encoding of the DER encoded certificate
    with line endings and padding with equals signs ...
-----END CERTIFICATE-----
-----BEGIN  PRIVATE KEY-----
base 64 encoding of the private key
-----END  PRIVATE KEY-----

PEM文件也可以包含一个完整的证书链,证书链以叶子/结尾证书服务开始,紧跟着签名它的证书,通常直到根证书(一般不包含根证书)。所以如果缺失证书,你也会首先check一下第一个证书。由此可知PEM既可以包含公钥、也可以包含私钥。

.cer扩展名

.cer指的是证书certificate,通常是DER编码格式的,也可以是PEM格式,也就是说cer是个后缀名,内容可以是DER编码或者PEM编码。

联系实际

看一下浏览器导出的证书,点击浏览器地址栏的安全锁—>证书---->详细信息—>复制到文件

可以看出导出来的证书后缀名是CER,编码是DER或者PEM

SSL证书、 der、 cer、 pem区别_ssl

总结

  • DER是种二进制编码方法,通常用来编码证书内容。
  • pem是有头、数据、尾部,通常头部、尾部表明了数据主体;数据是base64;pem可以存储公钥、私钥、证书、完整的证书链;
  • cer就是证书的意思,DER或者PEM编码;
  • pem是中编码方法,内容不限,所以既可以包含公钥、也可以包含私钥。

What are the differences between .pem, .cer and .der?

Does .pem file contain both private and public keys?