?? 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)算法??蛇x參數字段的內容將根據識別出的算法改變。第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
字段同樣的算法標識符??蛇x參數字段的內容將根據識別出的算法改變。第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) 失?。╝),如果BMPString字符集是足夠的,字符可以被描述為一BMPString;
和
(c) 失?。╝)和(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 + -