介绍
通常来说, 所有 SSL 证书都被视为 X.509 证书的类型. 这些数字证书具有不同的文件扩展名和格式.
分类
Base64 (ASCII)
- PEM: 由
RFC管理, 开源软件优先使用, 因为它是基于文本的, 因此不太容易出现翻译/传输错误. 可以有多种扩展名(.pem、.key、.cer、.cert等)- .pem
- .crt
- .ca-bundle
- PKCS#7:
Java使用并受Windows支持的开放标准. 不包含私钥内容.- .p7b
- .p7s
- .p7c
- PEM: 由
Binary
- DER:
PEM的父格式, 可以将其视为base64编码的PEM文件的二进制版本. 在Windows之外不经常使用.- .der
- .cer
- PKCS#12: 一种
Microsoft私有标准, 后被纳入RFC, 与纯文本PEM格式相比, 安全性得到增强. 可以包含私钥和证书链内容.Windows系统优先使用, 可通过openssl自由转换为PEM格式.- .pfx
- .p12
- DER:
单独说明
PEM格式: 查看什么是PEM文件P7B/PKCS#7格式:P7B/PKCS#7格式的证书以Base64 ASCII编码进行编码, 它们通常具有.p7b或.p7c作为文件扩展名. 将PKCS#7格式的证书分开的原因在于, 只有证书才能以这种格式存储, 而私钥则不能. 换句话说, 一个P7B文件将只包含证书和链证书.具有
P7B/PKCS#7格式的证书包含在"--BEGIN PKCS7--"和"--END PKCS7--"语句之间.Microsoft Windows和Java Tomcat是使用这种格式的SSL证书的最常见平台.DER格式: DER 证书格式代表distinguished encoding rules, 是PEM格式证书的二进制形式.DER格式可以包含所有类型的证书和私钥, 大多使用.cer和.der扩展名.DER证书格式最常用于基于Java的平台.PFX/P12/PKCS#12格式: 是一种受密码保护的容器格式, 包含公共和私有证书对. 和.pem文件不同, 这个容器是完全加密的.PFX/P12/PKCS#12格式 —— 都是指个人信息交换格式 —— 是存储服务器证书的二进制格式. 这些文件通常在Windows平台上使用,用来导入和导出证书及私钥.
不同格式的转换
因为以下两个原因, 存在不同编码格式证书的互相转换需求:
- 不同证书颁发机构以不同的格式颁发证书
- 不同的服务器需要不同格式的证书
不同格式间的转换, 请查看: openssl-toolkit使用
其他
一些名词的解释:
SSL:Secure Socket Layer安全套接字层TLS:Transport Layer Security传输层安全协议CSR:Certificate Signing Request证书签名请求, 实际格式是 RFC 2986 中定义的PKCS10, 它包括所请求证书的部分/全部关键细节, 例如subject, organization, state诸如此类, 以及要签署的证书的公钥. 这些由 CA 签名并返回证书, 返回的证书是公共证书(包括公钥但不包括私钥),返回的证书可以有多种格式.key: 这是一个(通常)PEM格式的文件, 仅包含特定证书的私钥, 并且只是一个惯用名称, 而不是标准化名称. 安装apache相关软件时, 通常可以在/etc/ssl/private中找到. 这些文件的权限非常重要, 如果设置错误, 有些程序会拒绝加载这些证书.PKCS:Public-Key Cryptography Standards公钥密码标准CRL:certificate revocation list证书吊销清单, 证书颁发机构生成这些内容作为证书到期前, 取消授权证书的一种方式.
本文内容参考自: