0. 目录
- PKI体系介绍
1.1 概念
1.2 PKI系统功能
- 数字证书
2.1 tbsCertificate (To Be Signed Certificate) :证书主体数据
2.2 signatureAlgorithm 签名算法标识
2.3 signatureValue 颁发者签名
-
证书编码格式
-
证书解析与编码转换
原文:https://mp.weixin.qq.com/s/Kr0nAW2Wi30C9yvS-bdINA
1. PKI体系介绍
1.1 概念
PKI,全称Public Key Infrastructure,中文是公钥基础设施。
PKI 是使用公钥密码技术实施吉尔提供安全服务的具有普适性的安全基础设施。
PKI是一个系统,包括技术、软硬件、人员、政策法律、服务的逻辑组件。
PKI的组成实体主要有:
- 端实体----PKI证书使用者、持有者
- CA ---- 认证中心
- RA ---- 注册中心
- CRL发布者 ---- 生成并签发证书撤销列表(CRL:证书撤销列表)
- 证书、CRL存储发布系统 ---- 以数据库等技术实现存储、发布、CRL的系统

1.2 PKI系统功能
完整的PKI系统功能包括2部分:数字证书管理、基于数字证书的应用(PKI服务)。
① 数字证书管理是PKI的核心工作,即CA负责完成证书生成、发布、撤销、更新以及密钥管理工作,贯穿证书和密钥的整个生命周期。
② PKI服务是确定证书持有者可信赖的数字身份,通过身份和密码机制结合,提供认证、授权、数字签名等服务。
2. 数字证书
PKI 解决了如何准确有效地传递公钥的问题,数字证书是PKI的核心,他是公钥的载体,将公钥和身份的绑定。
X.509 v3 数字证书结构如下 :
Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING }
2.1 tbsCertificate (To Be Signed Certificate) :证书主体数据
证书主体数据,即证书中待签名的部分,包含了证书的核心内容, 该字段包含主题和颁发者的名称、与主题相关联的公钥、有效期和其他相关信息。原文第 4.1.2 节详细描述了这些字段;TBSC 证书通常包括扩展,如标准原文第 4.2 节所述。TBSC 证书内容格式如下:
TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1,// (1)版本号 serialNumber CertificateSerialNumber, // (2)序列号 signature AlgorithmIdentifier, // (3)用于签署证书的算法信息 issuer Name, // (4)颁发者名称 validity Validity, // (5)有效期 subject Name, // (6)被签名者名称 subjectPublicKeyInfo SubjectPublicKeyInfo, // (7)被签名者公钥信息 issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version MUST be v2 or v3 // (8)颁发者唯一ID-可选 subjectUniqueID[2] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version MUST be v2 or v3 // (9)被签者唯一ID-可选 extensions [3] EXPLICIT Extensions OPTIONAL -- If present, version MUST be v3 // (10)扩展信息-可选}
(1) version 版本号
Version ::= INTEGER { v1(0), v2(1), v3(2) }
(2) serialNumber 序列号
由CA编排的一串正整数,每个证书都拥有唯一的序列号,一般不超过20 bytes。
CertificateSerialNumber ::= INTEGER
(3) signature 用于签名证书的算法信息
定义了用于签署证书的签名算法,包括算法的标识符及其相关的可选参数,。
AlgorithmIdentifier ::= SEQUENCE{ algorithm OBJECT IDENTIFIER, -- 公钥签名算法类型 parameters ANY DEFINED BY algorithm OPTIONAL -- 可选字段,根据签名算法类型,填充算法的信息 }
(4) issuer name 颁发者
颁发者字段标识颁发证书的实体。颁发者字段必须包含非空的可分辨名称 Distinguished Name(DN)。它通常由一系列属性组成,用以唯一地标识证书的发行者。DN中的属性由以下ASN.1结构定义:
Name ::= CHOICE { rdnSequence RDNSequence} -- only one possibility for now
通常包括以下这些信息,即 Name值:
Common Name (CN)**: 发行者的常见名称,比如CA的名称。
Organization (O)**: 发行者的组织名称。
Organizational Unit (OU)**: 发行者所在组织的部门或单元名称。
Country (C)**: 发行者所在的国家代码(两位字母ISO 3166国家代码)。
Locality (L)**: 发行者所在的城市或区域名称。
State or Province (ST or P)**: 发行者所在的州、省或行政区名称。
Email**: 在某些情况下,可能会包含发行者的电子邮件地址。
(5) validity 有效期
定义证书的有效起始时间、失效时间
Validity ::= SEQUENCE { notBefore Time, -- 到期时间 notAfter Time } -- 起始时间
Time ::= CHOICE { -- 定义了可用的时间格式 utcTime UTCTime, generalTime GeneralizedTime }(6) subject name 证书所有者信息
一般和issuer name属性定义一致。当证书主体为CA自己,issuer name和subject name相同,称为自签名证书。
(7) subjectPublicKeyInfo 主体公钥信息
包括公钥算法标识(使用OID标识)、公钥值
SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, -- 算法类型,可包含算法额外参数 subjectPublicKey BIT STRING } -- 使用者的公钥内容
(8) issuerUniqueID 颁发者唯一ID -- 可选的 (V1不使用)
不同实体或者不同实体的不同证书将使用不同的标识
UniqueIdentifier ::= BIT STRING
(9) subjectUniqueID 使用者唯一ID -- 可选的 (V1不使用)
同(8)
(10) extensions 扩展选项 -- 可选的 (V1、V2不使用)
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension Extension ::= SEQUENCE { extnID OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING -- contains the DER encoding of an ASN.1 value -- corresponding to the extension type identified -- by extnID }
2.2 signatureAlgorithm 签名算法标识
AlgorithmIdentifier ::= SEQUENCE {algorithm OBJECT IDENTIFIER, -- 签名算法类型parameters ANY DEFINED BY algorithm OPTIONAL } -- 算法额外信息,可选
2.3 signatureValue 颁发者签名
基于 ASN. 1 DER编码的整个主体数据部分( tbsCertificate)计算的数据签名。通过生成此签名,CA 将证明 tbsCertificate 字段中信息的有效性。特别是,CA 认证公钥材料与证书主题之间的绑定。
3. 证书编码格式
https://mp.weixin.qq.com/s/Kr0nAW2Wi30C9yvS-bdINA
4. 证书解析与码转换
https://mp.weixin.qq.com/s/Kr0nAW2Wi30C9yvS-bdINA
.