4. Certificate and Certificate Extensions Profile (证书和证书扩展配置)
本节提供了一个公钥证书配置文件 (Profile), 以促进互操作性和可重用的PKI. 本节基于X.509 v3证书格式和 [X.509] 中定义的标准证书扩展. 本节还定义了支持互联网社区PKI所需的私有扩展.
证书可用于广泛的应用程序和环境, 涵盖广泛的互操作性目标和更广泛的操作和保证要求. 本文档的目标是为需要广泛互操作性和有限特殊目的要求的通用应用程序建立通用基线. 特别是, 重点将放在支持X.509 v3证书用于非正式互联网电子邮件, IPsec和WWW应用程序.
4.1. Basic Certificate Fields (基本证书字段)
X.509 v3证书基本语法如下. 对于签名计算, 使用ASN.1可辨别编码规则 (Distinguished Encoding Rules, DER) [X.690] 对要签名的数据进行编码.
证书结构 (Certificate Structure)
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate 结构
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
extensions [3] EXPLICIT Extensions OPTIONAL
}
4.1.1. Certificate Fields (证书字段)
证书 (Certificate) 是一个包含三个必需字段的序列 (SEQUENCE).
4.1.1.1. tbsCertificate
该字段包含主体和颁发者的名称, 与主体关联的公钥, 有效期以及其他相关信息. 详细字段在第4.1.2节中描述; tbsCertificate通常包括扩展, 扩展在第4.2节中描述.
4.1.1.2. signatureAlgorithm (签名算法)
signatureAlgorithm字段包含CA用于签署此证书的加密算法的标识符. [RFC3279], [RFC4055] 和 [RFC4491] 列出了支持的签名算法, 但也可以支持其他签名算法.
算法标识符由以下ASN.1结构定义:
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
此字段必须 (MUST) 包含与序列tbsCertificate中signature字段相同的算法标识符 (第4.1.2.3节).
4.1.1.3. signatureValue (签名值)
signatureValue字段包含对ASN.1 DER编码的tbsCertificate计算的数字签名. ASN.1 DER编码的tbsCertificate用作签名函数的输入. 此签名值编码为位串 (BIT STRING) 并包含在signature字段中.
通过生成此签名, CA证明tbsCertificate字段中信息的有效性. 特别是, CA证明公钥材料与证书主体之间的绑定.
4.1.2. TBSCertificate (待签名证书)
序列TBSCertificate包含与证书主体和颁发它的CA相关的信息. 每个TBSCertificate都包含主体和颁发者的名称, 与主体关联的公钥, 有效期, 版本号和序列号; 某些可能包含可选的唯一标识符字段.
4.1.2.1. Version (版本)
此字段描述编码证书的版本:
- 当使用扩展时, 如本配置文件所预期的, 版本必须 (MUST) 为3 (值为2)
- 如果不存在扩展但存在UniqueIdentifier, 则版本应该 (SHOULD) 为2 (值为1)
- 如果仅存在基本字段, 则版本应该 (SHOULD) 为1
实现应该 (SHOULD) 准备接受任何版本的证书. 至少, 符合标准的实现必须 (MUST) 识别版本3证书.
4.1.2.2. Serial Number (序列号)
序列号必须 (MUST) 是由CA分配给每个证书的正整数. 对于给定CA颁发的每个证书, 它必须 (MUST) 是唯一的 (即, 颁发者名称和序列号标识唯一的证书). CA必须 (MUST) 强制serialNumber为非负整数.
给定上述唯一性要求, 序列号可能包含长整数. 证书用户必须 (MUST) 能够处理最多20个八位字节的serialNumber值. 符合标准的CA禁止 (MUST NOT) 使用超过20个八位字节的serialNumber值.
4.1.2.3. Signature (签名)
此字段包含CA用于签署证书的加密算法的标识符. 此字段必须 (MUST) 包含与signatureAlgorithm字段 (4.1.1.2节) 相同的算法标识符.
4.1.2.4. Issuer (颁发者)
issuer字段标识签署并颁发证书的实体. issuer字段必须 (MUST) 包含非空的可辨别名称 (Distinguished Name, DN).
4.1.2.5. Validity (有效期)
证书有效期是CA保证其将维护有关证书状态信息的时间间隔. 该字段用notBefore和notAfter两个日期值表示.
Validity ::= SEQUENCE {
notBefore Time,
notAfter Time }
4.1.2.6. Subject (主体)
subject字段标识与证书中存储的公钥相关联的实体. subject名称可以作为可辨别名称 (DN) 携带, 或者可以为空, 此时应使用subjectAltName扩展.
4.1.2.7. Subject Public Key Info (主体公钥信息)
此字段用于携带公钥并标识使用该密钥的算法 (例如, RSA, DSA或Diffie-Hellman).
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
4.2. Certificate Extensions (证书扩展)
本节定义了X.509 v3证书的标准扩展和互联网特定扩展. 这些扩展提供了将附加属性与用户或公钥关联以及管理证书层次结构关系的方法.
扩展格式:
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING }
关键性 (Criticality)
每个扩展都包含一个关键性 (critical) 标志:
- 关键扩展 (Critical Extensions): 如果系统无法识别关键扩展, 则必须 (MUST) 拒绝该证书
- 非关键扩展 (Non-Critical Extensions): 如果系统无法识别非关键扩展, 则可以忽略该扩展
4.2.1. Standard Extensions (标准扩展)
标准扩展是在X.509中定义的扩展. 本配置文件定义了以下标准扩展的使用:
- Authority Key Identifier (授权密钥标识符) - 识别用于签署证书的密钥
- Subject Key Identifier (主体密钥标识符) - 提供区分多个公钥的方法
- Key Usage (密钥用途) - 定义证书中公钥的用途
- Extended Key Usage (扩展密钥用途) - 指示证书公钥可用于的其他目的
- Certificate Policies (证书策略) - 包含一个或多个策略信息项
- Policy Mappings (策略映射) - 用于交叉证书中
- Subject Alternative Name (主体备用名称) - 允许将身份绑定到证书主体
- Issuer Alternative Name (颁发者备用名称) - 允许将其他身份与证书颁发者关联
- Basic Constraints (基本约束) - 标识证书主体是CA还是终端实体
- Name Constraints (名称约束) - 定义证书路径中后续证书主体名称的名称空间
- Policy Constraints (策略约束) - 抑制策略映射或要求每个证书包含可接受的策略标识符
- CRL Distribution Points (CRL分发点) - 指示如何获取CRL信息
- Freshest CRL (最新CRL) - 指示如何获取增量CRL信息
4.2.2. Internet Certificate Extensions (互联网证书扩展)
本规范定义了两个互联网特定的证书扩展:
- Authority Information Access (授权信息访问) - 指示如何访问CA信息和服务
- Subject Information Access (主体信息访问) - 指示如何访问主体提供的信息和服务
注意: 第4章内容非常详细, 包含每个证书字段和扩展的完整ASN.1语法, 语义和处理规则. 完整的技术细节请参考RFC 5280原文.
相关章节
- [4.1详细规范] - 证书基本字段的完整规范
- [4.2详细规范] - 证书扩展的完整规范