介绍
通常来说, 所有 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
证书吊销清单, 证书颁发机构生成这些内容作为证书到期前, 取消授权证书的一种方式.
本文内容参考自: