📄 rfc2459.txt
字号:
邮件、IPsec和WWW上。
4.1基本证书字段
X.509 v3证书基本语法如下。为签名计算,将证书按照ASN.1语法(DER) [X.208]
规则进行编码传递。ASN.1 DER编码是对每个元素对应的标签、长度、值编码系统。
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
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,
-- If present, version shall be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version shall be v2 or v3
extensions [3] EXPLICIT Extensions OPTIONAL
-- If present, version shall be v3
}
Version ::= INTEGER { v1(0), v2(1), v3(2) }
CertificateSerialNumber ::= INTEGER
Validity ::= SEQUENCE {
notBefore Time,
notAfter Time }
Time ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime }
UniqueIdentifier ::= BIT STRING
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING }
下面几个小段的项目定义了在Internet中使用的X.509 v3证书。
4.1.1证书字段
证书是三个连串(SEQUENCE)的字段。这些字段将在下列部分中详细描绘。
4.1.1.1 tbsCertificate
这个字段含有主题和发行者的名字,主题联系起来的公开密钥,有效期和其他相关信息。
字段在部分4.1.2中详细被描述;字段tbscertificate也可以包括在部分4.2中描述的扩展项。
4.1.1.2 signatureAlgorithm
signatureAlgorithm字段含有CA签发证书使用的密码学算法标识符。第7.2段列出支持
的签名算法。
由下列的ASN.1结构确定一个算法标识符:
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
算法标识符用于识别出密码学的算法。算法标识符(OBJECT IDENTIFIER)成分识别
出(例如SHA 1的DSA)算法。可选参数字段的内容将根据识别出的算法改变。第7.2段
列出了本文支持的算法。
这个字段必须(MUST)含有在序列tbsCertificate(见4.1.2.3)中签名字段算法标识符
同样的算法标识符。
4.1.1.3 signatureValue
signatureValue字段包括对tbsCertificate的ASN.1 DER编码的数字签名。TbsCertificate
的ASN.1 DER编码作为签名函数的输入参数。这个签名结果值然后作为BIT STRING 类型
的ASN.1编码,并且包括在证书的签名字段中。这个过程在7.2段中针对每种支持算法(进
行了)详细描述。
通过产生数字签名,CA能证明在tbsCertificate字段中信息的有效性。特别是,CA能
够认证在证书中公开密钥和证书的主题的绑定。
4.1.2 TBSCertificate
序列TBSCertificate含有和CA发行证书的主题联系起来的信息。每一个TBSCertificate
含有主题和发行者的名字;以及和主题联系起来的公开密钥、有效期、版本号和序列号;一
些可选的唯一标识符字段。这部分余下的部分描述这些字段的句法和语义学。TBSCertificate
也可以包含扩展项。扩展部分在Internet PKI(在部分)4.2中被描绘。
4.1.2.1版本
这个字段描绘编码证书的版本。当扩展被使用的时候,如同在本文中预期那样,使用
X.509版本3(值是2)。但是如果没有扩展项,UniqueIdentifier将存在,这时使用版本2(值
是1)。如果仅仅基本字段存在,使用版本1(作为缺省值,版本号将在证书中删掉)。
(证书系统应用)工具应该(SHOULD)有准备接受任何版本的证书。最低限度,工
具(MUST)必须能够识别出第3版的证书。
第2版证书的产生不是本文预期的描述对象。
4.1.2.2序列号
序列号是CA给每一个证书分配一个整数。它必须(MUST)是特定CA签发的证书唯
一识别(即,发行者名字和序列号唯一识别一张证书)。
4.1.2.3签名
这字段含有算法标识符,这个算法是CA在证书上签名使用的算法。
这个字段必须(MUST)含有作为在序列Certificate (见4.1.1.2)中signatureAlgorithm
字段同样的算法标识符。可选参数字段的内容将根据识别出的算法改变。第7.2段列出支持
的签名算法。
4.1.2.4发行者
发行者字段用来标识在证书上签名和发行的实体。发行者字段必须(MUST)含有一非
空的能辨别出的名字(DN)。把发行者字段定义为X.501类型名字。[X.501]名字由下列的
ASN.1结构确定:
Name ::= CHOICE {
RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::=
SET OF AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
AttributeType ::= OBJECT IDENTIFIER
AttributeValue ::= ANY DEFINED BY AttributeType
DirectoryString ::= CHOICE {
teletexString TeletexString (SIZE (1..MAX)),
printableString PrintableString (SIZE (1..MAX)),
universalString UniversalString (SIZE (1..MAX)),
utf8String UTF8String (SIZE (1.. MAX)),
bmpString BMPString (SIZE (1..MAX)) }
名字(Name)描绘了一等级制度的名字属性组成,例如国家名字和对应的值,例如US。
类型AttributeValue的成分由AttributeType决定;一般地说它将是一DirectoryString(类型)。
DirectoryString类型定义为一个对PrintableString、TeletexString、BMPString、UTF8String
和UniversalString(类型)的选择。UTF8String编码是DirectoryString的首选编码,以及所
有的在2003年12月31日之后签发的证书必须(MUST)使用UTF8String编码(正如同下
面指出那样)。直到那日期,当创建一个可辨别的名字时CAs必须(MUST)在下列的选择
中挑选,包括他们自己:
(a) 如果字符集是足够的,字符可以(MAY)被描述为一PrintableString;
(b) 失败(a),如果BMPString字符集是足够的,字符可以被描述为一BMPString;
和
(c) 失败(a)和(b),字符必须(MUST)被描述为一UTF8String。如果(a)
或者(b)是满足的,CA可以(MAY)仍然宁愿选择把字符描述为一
UTF8String。
2003年12月31日 UTF8编码要求的例外如下:
(a) CAs可以(MAY)签发“名字滚翻”("name rollover")支持一向UTF8String
编码整齐的迁移证书。这样证书将包含CA的作为发行者UTF8String编码名
字和作为主题的老名字编码,或者反之亦然。
(b) CAs在部分4.1.2.6中表明,主题字段必须(MUST)存在由主题CA不管如
何编码签发的所有证书中发行者字段的内容相配的一非空的可识别名字。
TeletexString和UniversalString为向后兼容(性)被包含,并且不应该为新主题的证书
使用。但是,这些类型可以在名字以前就存在的证书中被使用。证书用户应该(SHOULD)
是有准备的以这些类型接受证书。
此外,很多遗留工具支持名字在ISO 8859-1字符集(Latin1String)中的编码,但是使
用TeletexString作为他们的标签。Latin1String包含在西方欧洲人国家中使用并不是部分
TeletexString 字符集的字符。加工TeletexString的工具应该(SHOULD)是有准备的处理整
个ISO 8859-1字符集。[ISO 8859-1]
同样,可识别名字由属性组成。本文说明不限制可以出现在名字的属性类型。但是,工
具必须(MUST)是有准备的以发行者名字接受证书,发行者名字含有下面确定的属性类型。
本文说明也支持额外的属性类型。
标准套装属性被定义在X.500系列的文档中。本文说明的[X.520]工具必须(MUST)是
有准备接受在发行者名字中(包括的)下列标准属性类型:国家、组织、组织的单位
(organizational-unit)、限定语的可识别名字、国家或者省名字和普通名字(common name)
(例如" Susan Housley")。此外,本文说明的工具应该(SHOULD)是有准备的收到下列的
在发行者名字中标准属性类型:地区、题目、姓、名字、开头的字母和产生限定语(例如"Jr."",
3rd"或者"IV")。这些属性类型句法和相结合对象标识符(OIDs)在附录A和B中ASN.1模
块中提供说明。
此外,本文说明的工具必须(MUST)是有准备的如同[RFC 2247]定义的那样接受
domainComponent属性。域名(Nameserver)系统(DNS)提供为系统贴上标签等级制度的
方法。这个属性提供为希望使用DNS和他们的DNS名字平行的组织一个方便的机制。这不
是用作替换名字字段的dNSName成分的替代。工具不需要把这样名字变成DNS名字。这
属性类型句法和相结合的OID在附录A和B中ASN.1模块中提供。
证书用户必须(MUST)是有准备处理发行者可识别名字和主题识别名字(见4.1.2.6)
去执行证书有效路径的名字链(部分6)。名字链由相匹配的随CA证书主题名字的在一张
证书中可识别的名字签发者执行。
本文说明仅要求在X.500系列文档中指定功能相似的一子集名字。使工具遵照的要求如
下:
(a) 可以被假定代表不同字符,属性值在不同类型(例如PrintableString和
BMPString)中编码;
(b) 除了PrintableString类型,属性值是区分大小写的(这个允许属性值和二进
制对象匹配);
(c) 在PrintableString中属性值不区分大小写(例如," Marianne Swanson"和"
MARIANNE SWANSON"相同);和
(d) 在去除头部和尾部的空格以及去转换在内部子串中一个或多个连续空格为一
个单一的空格后,在PrintableString中属性值可被比较。
这些名字比较规则允许一个证书用户验证使用证书用户所不熟悉的语言或者编码签发
的证书的有效性。
此外,本文说明的工具可以(MAY)使用这些比较规则为名字链处理不熟悉的属性类
型。这允许工具随着在发行者名字中不熟悉的属性处理证书。
注意在X.500系列文档中定义的比较规则指出用于在可识别名字中数据编码的字符集
是无关紧要的。字符(他们)自身被比较而不关心编码。允许本文的工具使用定义在X.500
系列文档中的比较算法。这样工具将通过前面指定算法认出相匹配的名字超集。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -