SSL证书及密钥以文件的形式存在于我们的电脑上,这些文件一般为以下4种格式:
- DER
- PEM
- PFX / PKCS#12
- PKCS#7
1、DER
- Distinguished Encoding Rules(可辨别编码规则)是在线证书的格式
- 二进制编码,如果用TXT进行查看会呈现出乱码。
- 在SSL证书领域,我们一般不用DER格式的文件来交换证书(因为DER只是在线文件)
- DER文件格式有以下文件扩展名:
- .der .cert .crt .csr
- 需要注意的是,文件扩展名不足以识别文件格式(比如不能说用了.cert或者.crt就说是DER文件)
2、PEM
- Privacy Enhanced Mail(隐私增强邮件)
- DER 格式的 base64 编码版本
- 每6位(bits)转换为一个字符(character)
-
Base64是一种可读性算法(普通的二进制数据随机性很大,二进制文件打开后会有很多奇怪的字符,可读性很差),使用Base64后可读性增强,它由64个字符组成,包括大写A-Z,小写a-z,数字0-9,两个符号 + 和 /
- PEM格式每个人都喜欢,因为没有特殊字符、特殊字母,所以它易于复制粘贴(好使)
- PEM文件包含以下识别符(可包含多个):
- “-----BEGIN CERTIFICATE-----” “-----END CERTIFICATE-----”证书文件
- “-----BEGIN PRIVATE KEY-----” “-----END PRIVATE KEY-----”私钥文件
- “-----BEGIN CERTIFICATE REQUEST-----” “-----END CERTIFICATE REQUEST-----” 证书申请时需要提交的CSR文件
- PEM文件格式扩展名
- .pem .cert .crt .key .csr
- 同样的,除了.pem,其他扩展名别的文件格式也能用,不能因为这些扩展名就认定是PEM文件
- 通过.pem或者上述的识别符(如“-----BEGIN CERTIFICATE-----”)可以判定是PEM文件格式
3、PFX / PKCS#12
- PFX = Personal Information Exchange,个人信息交换(不知道缩写为啥不都选第一个字母)
- Public-Key Cryptography Standard #12,公钥加密标准#12
- PFX最早由微软(Microsoft)在1996年发布,但是这个文件存在的问题是不易读,且经常让人困扰,所以RSA Labs在1999年将PFX标准进行重新编写,并重新发布了PKCS#12,现在全世界都在用PKCS#12格式(纯PFX格式的文件很少见了);
- 虽然现在都用PKCS#12格式,但还是用的PFX名称和扩展(还叫他PFX文件)
- PFX / PKCS#12文件里包含一张证书和相匹配的密钥,出现在相同的文件里,易于部署
- 此外,PFX文件还包含额外的链证书或者说中间证书(之后我们会阐述证书链)
- PFX / PKCS#12文件也是二进制编码,不能用txt查看
- PFX / PKCS#12文件扩展名如下:
- .pfx .p12 .pkcs12
4、PKCS#7
- Public-Key Cryptography Standard #7
- Base64编码文件(“-----BEGIN PKCS7-----”)
- 包含证书或者中间证书,但不包含密钥,只包含证书
- PKCS#7在SSL证书中不常用,但也是很常用的证书或密钥格式,它起初是用于S/MIME邮件签名来分享证书,用PKCS#7格式的文件验证邮件的签名。(注意,签名由私钥创建,但由证书中的公钥进行验证,这就解释了为什么PKCS#7文件格式里没有密钥)
- PKCS#7文件扩展名如下:
- .pkcs7 .p7b .p7c
最后,不同的软件使用对应的文件格式,列举如下:
- DER:Java
- PEM:Apache,NGINX,Linux,Plesk;Cisco Routers,Cisco ASAs,BigIP F5
- PFX / PKCS#12:IIS,Windows,Tomcat,Thunderbird,Firefox
- PKCS#7:S/MIME;Java,Windows
参考文献
1、网站:Practical Networking.net:Practical TLS
标签:文件,PKCS,证书,笔记,SSL,-----,PFX,文件格式 From: https://blog.csdn.net/Taki_UP/article/details/141634119