前言
.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
总结
- 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?