X.509证书
ASN.1抽象语法标记(Abstract Syntax Notation One) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。
ASN.1 都可以发送各种形式的信息(声频、视频、数据等等),独立于计算机架构和语言的方式来描述数据结构。
ISO中的应用层协议使用了 ASN.1 来描述它们所传输的 PDU,包括:用于传输电子邮件的 X.400、用于目录服务的 X.500、用于 VoIP 的 H.323 和 SNMP。还可以扩展到通用移动通信系统(UMTS)中的接入和非接入层。
ASN.1的子集:基本编码规则(BER) -X.209 、规范编码规则(CER)、识别名编码规则(DER)、压缩编码规则(PER)和 XML编码规则(XER)。
简洁的二进制编码规则(BER、CER、DER、PER,但不包括 XER)可当作更现代 XML 的替代。然而,ASN.1 支持对数据的语义进行描述,所以它是比 XML 更为高级的语言。
Canonical Encoding Rules (CER) is a message transfer syntax specified by the ITU in X.690
ASN.1的 基本编码规则的限制变种
而误码率如何可编码数据值的选择的CER和DER选择只是一个编码的基本编码规则
X.509,数字证书的格式遵循X.509标准
包含了一个证书吊销列表(CRL-Certificate Revocation List)实施的标准
X.509 3 版是最新的版本(1996 年),ITU制定
X.509 v3证书数据结构如下:
Certificate证书
Version 版本
Serial Number 序列号
Algorithm ID 算法标识
Issuer 颁发者
Validity 有效期
Not Before 有效起始日期
Not After 有效终止日期
Subject 使用者
Subject Public Key Info 使用者公钥信息
Public Key Algorithm 公钥算法
Subject Public Key 公钥
Issuer Unique Identifier (Optional) 颁发者唯一标识
Subject Unique Identifier (Optional) 使用者唯一标识
Extensions (Optional) 扩展
...
Certificate Signature Algorithm 证书签名算法
Certificate Signature 证书签名
证书扩展文件名
.cer, .crt - 通常被用于二进制的DER文件格式 (同于.der), 不过也被用于Base64编码的文件 (例如 .pem).
.P7B - 同于 .p7c
.P7C - PKCS#7证书格式,仅仅包含证书和CRL列表信息,没有私钥。
.PFX - 同于 .p12
.P12 - PKCS#12文件, 包含证书(公钥)和私钥(受密码保护),已经完整的证书链信。
PKCS#7 是一种将数据加密和签名(正式名称是“enveloping”)的技术标准。 它描述数字证书的语法和其他加密消息——尤其是,数据加密和数字签名的方法,也包含了算法。但PKCS#7不包含私钥信息。
PKCS#12 定义了一个用于保存私钥和对应公钥证书的文件格式,并由对称密钥加密保护。PKCS#12通常采用PFX,P12作为文件扩展名。 PKCS#12文件可以存放多个证书,并由密码保护,通常用于WINDOWS IIS,也能够被当作Java Keysotre文件使用,用于Tomcat,Resign,Weblogic,Jboss等,不能被用于Apache.
JKS文件(通常为*.jks或*.keystore,扩展名无关)通过Java原生工具——KeyTool生成;PKCS#12文件(通常为*.p12或*.pfx,意味个人信息交换文件),通过更为常用的OpenSSL工具产生。