5.2 數字證書格式
5.2.1 綜述
本標準采用GB/T 16262-1系列標準的特定編碼規則(DER)對下列證書項中的各項信息進行編碼,組成特定的證書數據結構。ASN.1 DER 編碼是關于每個元素的標記、長度和值的編碼系統。
5.2.2 基本證書域的數據結構
數字證書的基本數據結構如下:
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAUT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- 如果出現,version必須是v2或者v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- 如果出現,version必須是v2或者v3
extensions [3] EXPLICIT Extensions OPTIONAL 擴展項
-- 如果出現, version 必須是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 }
上述的證書數據結構由tbsCertificate, signatureAlgorithm和signatureValue三個域構成。這些域的含義如下:
tbsCertificate域包含了主體名稱和簽發者名稱、主體的公鑰、證書的有效期以及其它的相關信息。
signatureAlgorithm域包含證書簽發機構簽發該證書所使用的密碼算法的標識符。一個算法標識符的ASN.1結構如下:
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
算法標識符用來標識一個密碼算法,其中的OBJECT IDENTIFIER 部分標識了具體的算法。其中可選參數的內容完全依賴于所標識的算法。該域的算法標識符必須與tbsCertificate中的signature標識的簽名算法項相同。如果簽名算法為SM2,無參數。
signatureValue域包含了對tbsCertificate域進行數字簽名的結果。采用ASN.1 DER編碼的tbsCertificate作為數字簽名的輸入,而簽名的結果則按照ASN.1編碼成BIT STRING類型并保存在證書簽名值域內。如果簽名算法為SM2,SM2密碼算法簽名數據格式參見GB/T AAAA。
5.2.3 TBSCertificate及其數據結構
TBSCertificate包含了證書結構中前十個項的信息。這些信息主要有主體和簽發者的名稱、主體的公鑰、有效期、版本號和序列號,有些TBSCertificate還可以包含可選的唯一標識符項和擴展項。本節的下述段落描述這些項的語法和語義。
5.2.3.1 版本 Version
本項描述了編碼證書的版本號。
5.2.3.2 序列號 Serial number
序列號是CA分配給每個證書的一個正整數,一個CA簽發的每張證書的序列號必須是唯一的(這樣,通過簽發者的名字和序列號就可以唯一地確定一張證書),CA 必須保證序列號是非負整數。序列號可以是長整數,證書用戶必須能夠處理長達20個8比特字節的序列號值。CA必須確保不使用大于20個8比特字節的序列號。
5.2.3.3 簽名算法 Signature
本項包含CA簽發該證書所使用的密碼算法的標識符,這個算法標識符必須與證書中signatureAlgorithm項的算法標識符相同。可選參數的內容完全依賴所標識的具體算法,可以支持用戶定義的簽名算法。
5.2.3.4 頒發者 Issuer
本項標識了證書簽名和證書頒發的實體。它必須包含一個非空的甄別名稱(DN-distinguished name)。該項被定義為X.501的Name類型,其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描述了由一些屬性組成的層次結構的名稱,如國家名、相應的值,如“國家=CN”。其中AttributeValue部分的類型是由AttributeType確定的,通常它是一個DirectoryString類型。
DirectoryString類型被定義為PrintableString, TeletexString, BMPString, UTF8String和UniversalString類型之一。UTF8String 編碼是首選的編碼。
5.2.3.5 有效期 Validity
證書有效期是一個時間段,在這個時間段內,CA擔保它將維護關于證書狀態的信息。該項被表示成一個具有兩個時間值的SEQUENCE類型數據:證書有效期的起始時間(notBefore)和證書有效期的終止時間(notAfter)。NotBefore和 notAfter這兩個時間都可以作為UTCTime類型或者GeneralizedTime類型進行編碼。
5.2.3.5.1 編碼類型要求
遵循本標準的CA在2049年之前(包括2049年)必須將該時間編碼為UTCTime類型,在2050年之后,編碼為GeneralizedTime類型。
5.2.3.5.2 世界時間 UTCTime
本項是為國際應用設立的一個標準ASN.1類型,在這里只有本地時間是不夠的。UTCTime通過兩個低位數確定年,時間精確到一分鐘或一秒鐘。UTCTime包含Z(用于Zulu,或格林威治標準時間)或時間差。
在本標準中,UTCTime值必須用格林威治標準時間(Zulu)表示,并且必須包含秒,即使秒的數值為零(即時間格式為YYMMDDHHMMSSZ)。系統對年字段(YY)必須如下解釋:
當YY大于等于50,年應解釋為19YY;當YY不到50,年應解釋為20YY。
5.2.3.5.3 通用時間類型 GeneralizedTime
通用時間類型,GeneralizedTime,是一個標準ASN.1類型,表示時間的可變精確度。GeneralizedTime字段能包含一個本地和格林威治標準時間之間的時間差。
本標準中,GeneralizedTime值必須用格林威治標準時間表示,且必須包含秒,即使秒的數值為零(即時間格式為YYYYMMDDHHMMSSZ)。GeneralizedTime值絕不能包含小數秒(fractional seconds)。
5.2.3.6 主體 Subject
主體項描述了與主體公鑰項中的公鑰相對應的實體。主體名稱可以出現在主體項和/或主體可選替換名稱擴展項中(subjectAltName)。如果主體是一個CA,那么主體項必須是一個非空的與簽發者項的內容相匹配的甄別名稱(distinguished name)。如果主體的命名信息只出現在主體可選替換名稱擴展項中(例如密鑰只與一個Email地址或者URL綁定),那么主體名稱必須是一個空序列,且主體可選替換名稱擴展項必須被標識成關鍵的。
當主體項非空時,這個項必須包含一個X.500的甄別名稱(DN),一個CA認證的每個主體實體的甄別名稱必須是唯一的。一個CA可以為同一個主體實體以相同的甄別名稱簽發多個證書。
主體名稱擴展項被定義成GB/T 16264.8—2005的名字類型。
5.2.3.7 主體公鑰信息 Subject Public Key Info
本項用來標識公鑰和相應的公鑰算法。公鑰算法使用算法標識符AlgorithmIdentifier結構來表示。
當公鑰算法為SM2時,AlgorithmIdentifier結構定義參見GB/T AAAA;當公鑰算法為RSA時,AlgorithmIdentifier結構定義參見PKCS#7。
5.2.3.8 頒發者唯一標識符issuerUniqueID
該項主要用來處理主體或者頒發者名稱的重用問題。本標準建議不同的實體名稱不要重用, Internet網的證書不要使用唯一標識符。遵循本標準的證書簽發機構應不生成帶有頒發者唯一標識符的證書,但是在應用過程中應該能夠解析這個項并進行對比。
5.2.3.9 主體唯一標識符subjectUniqueID
該項主要用來處理主體名稱的重用問題,本標準建議對不同的實體名稱不要重用,并且不建議使用此項,遵循本標準的證書簽發機構應不生成帶有主體唯一標識符的證書,但是在應用過程中應該能夠解析唯一標識符并進行對比。
5.2.3.10 擴展項extensions
若出現,該項則是一個或多個證書擴展的序列(SEQUENCE),其內容和數據結構在5.2.4中定義。
5.2.4 證書擴展域及其數據結構
5.2.4.1 證書擴展
本標準定義的證書擴展項提供了把一些附加屬性同用戶或公鑰相關聯的方法以及證書結構的管理方法。數字證書允許定義標準擴展項和專用擴展項。每個證書中的擴展可以定義成關鍵性的和非關鍵性的。一個擴展含有三部分,他們分別是擴展類型、擴展關鍵度和擴展項值。擴展關鍵度(extension criticality)告訴一個證書的使用者是否可以忽略某一擴展類型。證書的應用系統如果不能識別關鍵的擴展時,必須拒絕接受該證書,如果不能識別非關鍵的擴展,則可以忽略該擴展項的信息。
本條定義一些標準的擴展項。需要特別注意的是,在實際應用過程中,如果采用了關鍵性的擴展,可能導致在一些通用的應用中無法使用該證書。
每個擴展項包括一個對象標識符OID和一個ASN.1結構。當證書中出現一個擴展時,OID作為extnID項出現,其對應的ASN.1編碼結構就是8bit字符串extnValue的值。一個特定的證書中特定的擴展只可出現一次。例如,一個證書只可以包含一個認證機構密鑰標識符擴展。一個擴展中包含一個布爾型的值用來表示該擴展的關鍵性,其缺省值為FALSE,即非關鍵的。每個擴展的正文指出了關鍵性項的可接收的值。
遵循本標準的CA必須支持密鑰標識符、基本限制、密鑰用法和證書策略等擴展。如果CA簽發的證書中的主體項為空序列,該CA就必須支持主體可替換名稱擴展。其它的擴展是可選的。CA還可以支持本標準定義之外的其它的擴展。證書的簽發者必須注意,如果這些擴展被定義為關鍵的,則可能會給互操作性帶來障礙。
遵循本標準的應用必須至少能夠識別下列擴展:密鑰用法、證書策略、主體替換名稱、基本限制、名稱限制、策略限制和擴展的密鑰用法。另外,本標準建議還能支持認證機構(authority)和主體密鑰標識符(subject key identifier)以及策略映射擴展。
5.2.4.2 標準擴展
5.2.4.2.1 綜述
本節定義數字證書的標準證書擴展,每個擴展與GB/T 16264.8-2005中定義的一個OID相關。這些OID都是id-ce的成員,其定義如下:
id-ce OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 29 }
5.2.4.2.2 頒發機構密鑰標識符authorityKeyIdentifier
頒發機構密鑰標識符擴展提供了一種方式,以識別與證書簽名私鑰相應的公鑰。當頒發者由于有多個密鑰共存或由于發生變化而具有多個簽名密鑰時使用該擴展。識別可基于發行方證書中的主體密鑰標識符或基于頒發者的名稱和序列號。
相應CA產生的所有證書應包括authorityKeyIdentifier擴展的keyIdentifier項,以便于鏈的建立。CA以“自簽”(self-signed )證書形式發放其公鑰時,可以省略認證機構密鑰標識符。此時,主體和認證機構密鑰標識符是完全相同的。
本項既可用作證書擴展亦可用作CRL擴展。本項標識用來驗證在證書或CRL上簽名的公開密鑰。它能辨別同一CA使用的不同密鑰(例如,在密鑰更新發生時)。本項定義如下:
id-ce-authorityKeyIdentifier OBJECTIDENTIFIER ::= {id-ce 35}
AuthorityKeyIdentifier ::= SEQUENCE {
keyIdentifier [0] KeyIdentifier OPTIONAL,
authorityCertIssuer [1] GeneralNames OPTIONAL,
authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
(WITH COMPONENTS {…,authorityCertIssuer PRESENT, authorityCertSerialNumber PRESENT} │
WITH COMPONENTS {…,authorityCertIssuer ABSENT, authorityCertSerialNumber ABSENT})
KeyIdentifier ::= OCTET STRING。
KeyIdentifier項的值應從用于證實證書簽名的公鑰導出或用產生唯一值的方法導出。公開密鑰的密鑰標識符KeyIdentifier可采用下述兩種通用的方法生成:
a) keyIdentifier由BIT STRING subjectPublicKey值的160-bit SHA1雜湊值組成(去掉標簽、長度和不使用的字節)。
b) keyIdentifier 由0100加上后跟的BIT STRING subjectPublicKey值的SHA -1雜湊值中最低位的60bit組成。
此密鑰可以通過keyIdentifier字段中的密鑰標識符來標識,也可以通過此密鑰的證書的標識(給出authorityCertIssur字段中的證書頒發者以及authorityCertSerialNumber字段中的證書序列號)來標識,或者可以通過密鑰標識符和此密鑰的證書標識來標識。如果使用兩種標識形式,那么,證書或CRL的頒發者應保證它們是一致的。對于頒發機構的包含擴展的證書或CRL的所有密鑰標識符而言,每個密鑰標識符應該是唯一的。不要求支持此擴展的實現能夠處理authorityCertIssuer字段中的所有名字形式。
證書認證機構指定或者自動產生證書序列號,這樣頒發者和證書序列號相結合就唯一地標識了一份證書。
除自簽證書之外,所有的證書必須包含本擴展,而且要包含keyIdentifier項。如果證書的頒發者的證書有SubjectKeyIdetifier擴展,則本擴展中keyIdentifier項必須與頒發者的證書的SubjectKeyIdetifier擴展的值一致,如果證書的頒發者的證書沒有SubjectKeyIdetifier擴展,則可以使用文中介紹的兩種方法之一來產生。
結構中的keyIdentifier,authorityCertSerialNumber建議為必選,但本擴展必須是非關鍵的。
5.2.4.2.3 主體密鑰標識符subjectKeyIdentifier
主體密鑰標識符擴展提供一種識別包含有一個特定公鑰的證書的方法。此擴展標識了被認證的公開密鑰。它能夠區分同一主體使用的不同密鑰(例如,當密鑰更新發生時)。此項定義如下:
id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= {id-ce 14}
SubjectKeyIdentifier::=KeyIdentifier
對于使用密鑰標識符的主體的各個密鑰標識符而言,每一個密鑰標識符均應是唯一的。此擴展項總是非關鍵的。
所有的CA證書必須包括本擴展;而且CA簽發證書時必須把CA證書中本擴展的值賦給終端實體證書AuthorityKeyIdentifier擴展中的KeyIdentifier項。 CA證書的主體密鑰標識符應從公鑰或生成唯一值的方法中導出。終端實體證書的主體密鑰標識符應從公鑰中導出。有兩種通用的方法從公鑰中生成密鑰標識符。
5.2.4.2.4 密鑰用法keyUsage
此擴展指示已認證的公開密鑰用于何種用途,該項定義如下:
id-ce-keyUsage OBJECT IDENTIFIER ::= {id-ce 15}
KeyUsage::=BIT STRING{
digitalSignature (0),
nonRepudiation (1),
keyEncipherment (2),
dataEncipherment (3),
keyAgreement (4),
keyCertSign (5),
cRLSign (6),
encipherOnly (7),
decipherOnly (8) }
KeyUsage類型中的用法如下:
a) digitalSignature:驗證下列b)、f)或g)所標識的用途之外的數字簽名;
b) nonRepudiation:驗證用來提供抗抵賴服務的數字簽名,這種服務防止簽名實體不實地拒絕某種行為(不包括如f)或g)中的證書或CRL簽名)。
c) keyEncipherment:加密密鑰或其它安全信息,例如用于密鑰傳輸。
d) dataEncipherment:加密用戶數據,但不包括上面c)中的密鑰或其他安全信息。
e) keyAgreement:用作公開密鑰協商密鑰。
f) keyCertSign:驗證證書的CA簽名。
g) CRLSign:驗證CRL的CA簽名。
h) EncipherOnly:當本比特與已設置的keyAgreement比特一起使用時,公開密鑰協商密鑰僅用于加密數據(本比特與已設置的其他密鑰用法比特一起使用的含義未定義)。
i) DecipherOnly: 當本比特與已設置的keyAgreement比特一起使用時,公開密鑰協商密鑰僅用于解密數據(本比特與已設置的其他密鑰用法比特一起使用的含義未定義)。
keyCertSign只用于CA證書。如果KeyUsage被置為keyCertSign和基本限制擴展存在于同一證書之中,那么,此擴展的CA成分的值應被置為TRUE。CA還可使用keyUsag中定義的其他密鑰用法比特,例如,提供鑒別和在線管理事務完整性的digitalSignature。
若缺少keyAgreement比特,則不定義encipherOnly比特的含義。若確定encipherOnly比特,且keyAgreement比特也被確定時,主體公鑰可只用于加密數據,同時執行密鑰協議。
若缺少keyAgreement比特,則不定義decipherOnly比特的含義。若確定decipherOnly比特,且keyAgreement比特也被確定時,主體公鑰可只用于脫密數據,同時執行密鑰協議。
所有的CA證書必須包括本擴展,而且必須包含keyertSign這一用法。此擴展可以定義為關鍵的或非關鍵的,由證書簽發者選擇。
如果此擴展標記為關鍵的,那么該證書應只用于相應密鑰用法比特置為“1”的用途。
如果此擴展標記為非關鍵的,那么它指明此密鑰的預期的用途或多種用途,并可用于查找具有多密鑰/證書的實體的正確密鑰/證書。它是一個咨詢項,并不意指此密鑰的用法限于指定的用途。置為“0”的比特指明此密鑰不是預期的這一用途。如果所有比特均為“0”,它指明此密鑰預期用于所列用途之外的某種用途。
在應用中,使用該擴展項對證書類型的進行區別,當設置了c)、d)、h)、i)比特中的一位時,表示該證書為加密證書;當設置了a)、b)比特中的一位時,表示該證書為簽名證書。
5.2.4.2.5 擴展密鑰用途extKeyUsage
此項指明已驗證的公開密鑰可以用于一種用途或多種用途,它們可作為對密鑰用法擴展項中指明的基本用途的補充或替代。此項定義如下:
id-ce-extKeyUsage OBJECT IDENTIFIER :: {id-ce 37}
ExtKeyUsageSyntax ::=SEQUENCE SIZE (1‥MAX) OF KeyPurposeId
密鑰的用途可由有此需要的任何組織定義。用來標識密鑰用途的客體標識符應按照GB/T 17969.1-2000來分配。
由證書簽發者確定此擴展是關鍵的或非關鍵的。
如果此擴展標記為關鍵的,那么,此證書應只用于所指示的用途之一。
如果此擴展標記為非關鍵的,那么,它指明此密鑰的預期用途或一些用途,并可用于查找多密鑰/證書的實體的正確密鑰/證書。它是一個咨詢項,并不表示認證機構將此密鑰的用法限于所指示的用途。然而,進行應用的證書仍然可以要求指明特定的用途,以便證書為此應用接受。
如果證書包含關鍵的密鑰用途項和關鍵的擴展密鑰項,那么,兩個項應獨立地處理,并且證書應只用于與兩個項一致的用途。如果沒有與兩個項一致的用途,那么,此證書不能用于任何用途。
本標準定義下列密鑰用途:
id-kp OBJECT IDENTIFIER ::= { id-pkix 3 }
id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 }
– TLS Webserver 鑒別
– Key usage 可以設置為digitalSignature, keyEncipherment或keyAgreement
id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 }
– TLS Webserver 鑒別
– Key usage 可以設置為digitalSignature和/或keyAgreement
id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 }
– 可下載執行代碼的簽名
– Key usage 可以設置為digitalSignature
id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 }
– E-mail 保護
– Key usage可以設置為digitalSignature,nonRepudiation和/或(keyEncipherment或keyAgreement)
– id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 }
– 將對象的Hash與同一時間源提供的時間綁定
– Key usage 可以設置為digitalSignature,nonRepudiation
id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 }
– OCSP 應答簽名
– Key usage 可以設置為digitalSignature,nonRepudiation
5.2.4.2.6 私有密鑰使用期privateKeyUsagePeriod
此擴展指明與已驗證的公開密鑰相對應的私有密鑰的使用期限。它只能用于數字簽名密鑰。此項定義如下:
id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER::={id-ce 16}
PrivateKeyUsagePeriod::=SEQUENCE{
notBefore [0] GeneralizedTime OPTIONAL,
notBefore字段指明私有密鑰可能用于簽名的最早日期和時間。如果沒有notBefere字段,那么不提供有關私有密鑰有效使用期何時開始的信息。NotAfter字段指明私有密鑰可以用于簽名的最遲日期和時間。如果沒有notAfter字段,那么,不提供有關私有密鑰有效使用期何時結束的信息。
這個擴展總是為非關鍵的。
注 1:私有密鑰有效使用期可以與證書有效性周期指明的已驗證的公開密鑰有效性不同。就數字簽名密鑰而言,簽名的私有密鑰使用期一般比驗證公開密鑰的時間短。
注 2:數字簽名的驗證者想要檢查直到驗證時刻此密鑰是否未被撤銷,例如,由于密鑰泄露,那么,在驗證時,對公開密鑰而言的有效證方應仍存在。在公開密鑰的證書期滿之后,簽名驗證者不能依賴CRL所通知的協議
5.2.4.2.7 證書策略certificatePolicies
本項列出了由頒發的CA所認可的證書策略,這些策略適用于證書以及關于這些證書策略的任選的限定符信息。
證書策略擴展包含了一系列策略信息條目,每個條目都有一個OID和一個可選的限定條件。這個可選的限定條件不要改變策略的定義。
在用戶證書中,這些策略信息條目描述了證書發放所依據的策略以及證書的應用目的;在CA證書中,這些策略條目指定了包含這個證書的驗證路徑的策略集合。具有特定策略需求的應用系統應該擁有它們將接受的策略的列表,并把證書中的策略OID與該列表進行比較。如果該擴展是關鍵的,則路徑有效性軟件必須能夠解釋該擴展(包括選擇性限定語),否則必須拒絕該證書。
為了提高互操作性,本標準建議策略信息條目中只包含一個OID,如果一個OID不夠,建議使用本節定義的限定語。
id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 }
certificatePolicies::=SEQUENCE SIZE (1..MAX) OF PolicyInformation
PolicyInformation::=SEQUENCE{
policyIdentifier CertPolicyId,
policyQualifiers SEQUENCE SIZE (1..MAX) OF
PolicyQualifierInfo OPTIONAL}
CertPolicyId::=OBJECT IDENTIFIER
PolicyQualifierInfo::=SEQUENCE{
policyQualifierId PolicyQualifierId,
qualifier ANY DEFINED BY policyQualifierId }
--policyQualifierIds for Internet policy qualifiers
id-qt OBJECT IDENTIFIER ::= { id-pkix 2 }
id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 }
id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 }
PolicyQualifierId ::=OBJECT IDENTIFIER ( id-qt-cps┃id-qt-unotice)
Qualifier ::= CHOICE {
cPSuri CPSuri,
userNotice UserNotice }
CPSuri ::= IA5String
UserNotice ::=SEQUENCE {
noticeRef NoticeReference OPTIONAL,
explicitText DisplayText OPTIONAL }
NoticeReference ::= SEQUENCE {
organization DisplayText,
noticeNumbers SEQUENCE OF INTEGER }
DisplayText ::= CHOICE {
visibleString VisibleString (SIZE (1‥200)),
bmpString BMPString (SIZE (1‥200)),
utf8String UTF8String (SIZE (1‥200)) }
本標準定義了兩種策略限定語,以供證書策略制定者和證書簽發者使用。限定語類型為CPS Pointer和User Notice限定語。
CPS Pointer限定語包含一個CA發布的CPS(Certification Practice Statement),指示字的形式為URI。
User notice有兩種可選字段:noticeRef字段和explicitText字段。NoticeRef字段命名一個團體,并通過記數識別該團體所做的一個專用文本聲明。ExplicitText字段在證書內直接包括文本聲明,該字段是一個最多含有200字符的串。如果noticeRef和explicitText選項都在同一個限定語中,且如果應用軟件可以找出由noticeRef選項指明的通知文本,則應展示該文本,否則應展示explicitText串。
5.2.4.2.8 策略映射policyMappings
本擴展只用于CA證書。它列出一個或多個OID對,每對包括一個issuerDomainPolicy和一個subjectDomainPolicy。這種成對形式表明,發行方CA認為其issuerDomainPolicy與主體CA的subjectDomainPolicy是等效的。發行方CA的用戶可以為某應用接收一個issuerDomainPolicy。策略映射告知發行方CA的用戶,哪些同CA有關的策略可以與他們接收到的策略是等效的。此項定義如下:
id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 }
PolicyMappingsSyntax::=SEQUENCE SIZE(1..MAX) OF SEQUENCE{
issuerDomainPolicy CertPolicyId,
策略不會被映射到或來自特殊的值anyPolicy。
該擴展可由CA和/或應用支持。證書簽發者可以將該擴展選擇為關鍵或非關鍵的。本標準推薦為關鍵的,否則一個證書用戶就不能正確解釋發布的CA設定的規則。
00003注 1:政策映射的一個例子如下:美國政府可有一個稱之為加拿大貿易的政策,加拿大政府可有一個稱之為美國貿易的政策。當兩個政策可有區別地被標識并被定義時,兩國政府之間可有個協定:就相關的用途,在兩個政策所隱含的規則之內,允許認證路徑延伸過境。
00004注 2:政策映射意味著作出有關決策時會耗費顯著的管理開銷和涉及相當大的勞動和委任人員。一般而言,最好的辦法是同意使用比應用政策映射更廣的全球的公共政策。在上述例子中,美國,加拿大和墨西哥同意一項公共政策,用于北美貿易那將是最好的。
00005注 3:預計政策映射實際上只能用于政策聲明非常簡單的有限環境。
5.2.4.2.9 主體替換名稱subjectAltName
本項包含一個或多個可選替換名(可使用多種名稱形式中的任一個)供實體使用, CA把該實體與認證的公開密鑰綁定在一起。
主體可選替換名擴展允許把附加身份加到證書的主體上。所定義的選項包括因特網電子郵件地址、DNS名稱、IP地址和統一資源標識符(URI)。還有一些純本地定義的選項。可以包括多名稱形式和每個名稱形式的多個范例。當這樣的身份被附加到一個證書中時,必須使用主體選擇名稱或頒發者選擇名稱擴展。由于主體可替換名被認為是與公鑰綁在一起的,主體可選替換名的所有部分必須由CA認證。此項定義如下:
id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 }
SubjectAltName ::= GeneralNames
GeneralNames::=SEQUENCE SIZE(1..MAX)OF GeneralName
GeneralName::=CHOICE{
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER}
OTHERNAME ::=SEQUENCE {
type-id OBJECT IDENTIFIER,
value [0] EXPLICIT ANY DEFINED BY type-id }
EDIPartyName::=SEQUENCE{
nameAssigner [0] DirectoryString OPTIONAL,
partyName [1] DirectoryString }
GeneralName類型中可替換的值是下列各種形式的名稱:
— otherName是按照OTHER-NAME信息客體類別實例定義的任一種形式的名稱;
— rfc822Name是Internet電子郵件地址;
— dNSName 是Internet域名;
— x400Address是O/R地址;
— directoryName是目錄名稱;
— ediPartyName 是通信的電子數據交換雙方之間商定的形式名稱;nameAssigner成分標識了分配partyName中唯一名稱值的機構;
— uniformResourceIdentifier是用于WWW的UniformRAesourceIdentifier,RFC1738中定義的URL語法和編碼規則;
— iPAddress是用二進制串表示的Internet Protocol地址;
— registeredID是對注冊的客體分配的標識符。
CA不得簽發帶有subjectAltNames卻包含空GeneralName項的證書。如果證書中的唯一主體身份是一個選擇名稱格式(如一個電子郵件地址),則主體的甄別名必須是空的(一個空序列),且subjectAltName擴展必須存在。如果主體字段包括一個空序列,則subjectAltName擴展必須標識為關鍵性的。如果出現subjectAltName擴展,則序列必須至少包含一個條目。
對GeneralName類型中使用的每個名稱形式,應有一個名稱注冊系統,以保證所使用的任何名稱能向證書頒發者和證書使用者無歧義地標識一個實體。
此擴展可以是關鍵的或非關鍵的,由證書簽發者選擇。不要求支持此擴展的實現能處理所有名稱形式。如果此擴展標記為關鍵的,那么,至少應能識別和處理存在的名稱形式之一,否則,應認為此證書無效。除先前的限制以外,允許證書使用系統不理睬具有不能識別的或不被支持的名稱形式的任何名稱。倘若,證書的主體項包含無二義地標識主體的目錄名稱,推薦將此項標記為非關鍵的。
00006注 1:TYPE-IDENTIFIER類別的使用在GB/T 16262.2-2006的附錄A和C中描述。
00007注 2:如果存在此擴展并標記為關鍵的,證書的subject項可以包含空名稱(例如,相關可甄別名的一個“0”序列),在此情況下,主體只能用此擴展中的名稱或一些擴展名稱來標識。
5.2.4.2.10 頒發者替換名稱issuerAltName
此項包含一個或多個替換名稱(可使用多種名稱形式中的任一個),以供證書或CRL頒發者使用。此項定義如下:
id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 }
IssuerAltName ::= GeneralNames
此項可以是關鍵的或非關鍵的,由證書或CRL頒發者選擇。不要求支持此擴展的實際應用能處理所有名稱形式。如果此擴展標記為關鍵的,那么至少應能識別和處理存在的名稱形式之一,否則,應認為此證書無效。除先前的限制以外,允許證書使用系統不理睬具有不能識別的或不支持的名稱形式的任何名稱。倘若,證書或CRL的頒發者項包含了一個明確標識頒發機構的目錄名稱,推薦將此項標記為非關鍵的。
如果存在此擴展,并標記為關鍵的,證書或CRL的issuer項可以包含空名稱(例如,對應可甄別名的一個 “0”序列),在此情況下,頒發者只能用名稱或此擴展中的一些名稱來標識。
5.2.4.2.11 主體目錄屬性subjectDirectoryAttributes
本項為證書主體傳送其期望的任何目錄屬性值。此項定義如下:
id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 }
SubjectDirectoryAttributes ::= SEQUENCE SIZE (1‥MAX ) OF Attribute
該擴展總是非關鍵的。
5.2.4.2.12 基本限制basicConstraints
本擴展項用來標識證書的主體是否是一個CA,通過該CA可能存在的認證路徑有多長。此項定義如下:
id-ce-basicConstraints OBJECT IDENTIFIER ::={ id-ce 19 }
BasicConstraintsSyntax::=SEQUENCE{
CA BOOLEAN DEFAULT FALSE,
CA字段標識此公鑰證書是否可用來驗證證書簽名。
PathLenConstraint字段僅在CA設置為TRUE時才有意義。它給出此證書之后認證路徑中最多的CA證書數目。0值表明在路徑中只可以向終端實體簽發證書,而不可以簽發下級CA證書。PathLenConstraint字段出現時必須大于或等于0。如果在認證路徑的任何證書中未出現pathLenConstraint字段,則對認證路徑的允許長度沒有限制。
CA證書中必須必須包括本擴展,而且必須是關鍵的,否則,未被授權為CA的實體可以簽發證書,同時證書使用系統會在不知情的情況下使用這樣的證書。
如果此擴展存在,并標記為關鍵的,那么:
——如果CA字段的值置為FALSE,則密鑰用法不能包含keyCertSign這一用法,其公開密鑰應不能用來驗證證書簽名;
——如果CA字段的值置為TRUE,并且pathLen Constraint存在,則證書使用系統應檢查被處理的認證路徑是否與pathLenConstraint的值一致。
00008注 1:如果此擴展不存在或標記為非關鍵項的并且未被證書使用系統認可,該證書被系統視為終端用戶證書,并且不能用來驗證證書簽名。
00009注 2:為限制一證書主體只是一個端實體,即,不是CA,頒發者可以在擴展中只包含一個空SEQUENCE值的擴展項。
5.2.4.2.13 名稱限制nameConstraints
本項應只用于CA證書,它指示了一個名稱空間,在此空間設置了認證路徑中后續證書中的所有主體名稱。此項定義如下:
id-ce-nameConstraints OBJECT IDENTIFIER::={ id-ce 30 }
NameConstraintsSyntax::=SEQUENCE{
permittedSubtrees [0] GeneralSubtrees OPTIONAL,
excludedSubtrees [1] GeneralSubtrees OPTIONAL}
GeneralSubtrees::=SEQUENCE SIZE (1..MAX) OF GeneralSubtree
GeneralSubtree::=SEQUENCE{
base GeneralName,
minimum [0] BaseDistance DEFAULT 0,
maximum [1] BaseDistance OPTIONAL}
BaseDistance::=INTEGER(0..MAX)
如果存在permittedSubtrees和excludedSubtrees字段,則他們每個都規定一個或多個命名子樹,每個由此子樹的根的名稱或以任選處于其子樹內的任意節點名稱來定義,子樹范圍是一個由上界和/或下界限定的區域。如果permittedSubtrees存在,由主體CA和認證路徑中下級CA頒發的所有證書中,只有那些在子樹中具有與permittedSubtrees字段規定主體名稱相同的證書才是可接受的。如果excludedSubtrees存在,由主體CA或認證路徑中后繼的CA頒發的所有證書中,同excludedSubtrees規定主體名稱相同的任何證書都是不可接受的。如果PermittedSutrees和excluded Subtrees都存在并且名稱空間重疊,則優先選用排斥聲明(exclusion statement)。
通過GeneralName字段定義的命名格式,需要那些具有良好定義的分層結構的名稱形式用于這些字段,Directory Name名稱形式滿足這種要求;使用這些命名格式命名的子樹對應于DIT子樹。在應用中不需要檢查和識別所有可能的命名格式。如果此擴展標記為關鍵項,并且證書使用中不能識別用于base項的命名格式,應視同遇到未識別的關鍵項擴展那樣來處理此證書。如果此擴展標記為非關鍵的,并且證書使用中不能識別用于base項的命名格式,那么,可以不理睬此子樹規范。當證書主體具有同一名稱形式的多個名稱時(在directory Name名稱形式情況下,包括證書主體項中的名稱,如果非“0”),那么,對與此名稱形式的名稱限制一致性而言應檢驗所有這些名稱。
可以對主體名稱或主體選擇名稱進行限制。只有當確定的名稱格式出現時才應用限制。如果證書中沒有類型的名稱,則證書是可以接受的。當對于命名格式限制的一致性測試證書主體名稱時,即使擴展中標識為非關鍵項也應予以處理。
Minimum字段規定了子樹內這一區域的上邊界。最后的命名形式在規定的級別之上的所有名稱不包含在此區域內。等于“0”(默認)的minimum值對應于此基部(base),即,子樹的頂節點。例如,如果minimum置為“1”,則命名子樹不包含根節點而只包含下級節點。
Maximun字段規定了子樹內這一區域的下邊界。最后的命名形式在規定的級別之下所有名稱不包含在此區域內。最大值“0”對應于此基部(base),即,子樹的頂。不存在的maximun字段指出不應把下限值施加到子樹內的此區域上。例如,如果maximun置為“1”,那么,命名子樹不包含除子樹根節點及其直接下級外的所有節點。
本標準建議將它標記為關鍵項,否則,證書用戶不能檢驗認證路徑中的后續證書是否位于簽發CA指定的命名域中。
如果此擴展存在,并標記為關鍵的,則證書用戶系統應檢驗所處理的認證路徑與此擴展中的值是否一致。
本標準中,任何名稱格式都不使用最小和最大字段,最小數總為 0,最大數總是空缺的。
5.2.4.2.14 策略限制policyConstraints
策略限制擴展用于向CA頒發的證書中。本擴展以兩種方式限制路徑確認。它可以用來禁止策略映射或要求路徑中的每個證書包含一個認可的策略標示符。本項定義如下:
id-ce-policyConstraints OBJECT IDENTIFIER ::={ id-ce 36 }
PolicyConstraints::=SEQUENCE{
requireExplicitPolicy [0]SkipCertsOPTIONAL,
SkipCerts::=INTEGER(0..MAX)
如果requireExplicitPolicy字段存在,并且證書路徑包含一個由指定CA簽發的證書,所有在此路徑中的證書都有必要在證書擴展項中包含合適的策略標識符。合適的策略標識符是由用戶在證書策略中定義的標識符,或聲明通過策略映射與其等價的策略的標識符。指定的CA指包含此擴展信息的認證機構(如果requireExplicitpolicy的值為“0”)或是認證路徑中后續認證機構CA(由非“0”值指示的)。
如果inhibitPolicyMapping字段存在,它表明在認證路徑中從所指定的CA開始直到認證路徑結束為止的所有證書中,不允許策略映射。指定的CA指包含此擴展信息的認證機構(如果inhibitPolicyMapping的值為“0”)或是認證路徑中后續認證機構CA(由非“0”值指示的)。
SkipCerts類型的值表示在某一限制成為有效之前應在認證路徑中需要跳過的證書的個數。
此擴展由證書簽發者選擇是關鍵的還是非關鍵的。本標準建議它標記為關鍵的,否則證書用戶可能不能正確地解釋認證機構CA設定的規則。
5.2.4.2.15 證書撤銷列表分發點CRLDistributionPoints
CRL分發點擴展用來標識如何獲得CRL信息,本擴展僅作為證書擴展使用。它可用于認證機構證書,終端實體公鑰證書以及屬性證書中。本項指定了CRL分發點或證書用戶的查閱點以確定證書是否已被撤銷。證書用戶能從可用分發點獲得一個CRL,或者它可以從認證機構目錄項獲得當前完整的CRL。
該項定義如下:
id-ce-CRLDistributionPoints OBJECT IDENTIFIER ::={ id-ce 31 }
cRLDistributionPoits::={ CRLDistPointsSyntax}
CRLDistPointsSyntax::=SEQUENCE SIZE (1..MAX) OF DistributionPoint
DistributionPoint::=SEQUENCE{
distributionPoint [0] DistributionPointNameOPTIONAL,
reasons [1] ReasonFlagsOPTIONAL,
cRLIssuer [2] GeneralNamesOPTIONAL}
DistributionPointName::=CHOICE{
fullName [0] GeneralNames,
nameRelativeToCRLIssuer [1] RelativeDistinguishedName}
ReasonFlags::=BITSTRING{
unused (0),
keyCompromise (1),
CACompromise (2),
affiliationChanged (3),
superseded (4),
cessationOfOperation (5),
certificateHold (6)}
distributionPoint字段標識如何能夠獲得CRL的位置。如果此字段缺省,分發點名稱默認為CRL頒發者的名稱。
當使用fullName替代名稱或應用默認時,分發點名稱可以有多種名稱形式。同一名稱(至少用其名稱形式之一)應存在于頒發CRL的分發點擴展的distrubutionPoint字段中。不要求證書使用系統能處理所有名稱形式。它可以只處理分發點提供的諸多名稱形式中的一種。如果不能處理某一分發點的任何名稱形式,若能從另一個信任源得到必要的撤銷信息,例如另一個分發點或CA目錄項,則證書應用系統仍能使用該證書。
如果CRL分發點被賦于一個直接從屬于CRL頒發者的目錄名稱的目錄名,則只能使用nameRelativeToCRLIssuer字段。此時,nameRelativeToCRLIssuer字段傳送與CRL頒發者目錄名稱有關的可甄別名。
Reasons字段指明由此CRL所包含的撤銷原因。如果沒有reasons字段,相應的CRL分發點發布包含此證書(如果此證書已被撤銷)的項的CRL,而不管撤銷原因。否則,reasons值指明相應的CRL分發點所包含的那些撤銷原因。
CRLIssuer字段標識頒發和簽署CRL的機構。如果沒有此字段,CRL頒發者的名稱默認為證書簽發者的名稱。
此擴展可以是關鍵的或非關鍵的,由證書頒發者選擇,建議該擴展設置為非關鍵的,但CA和應用應支持該擴展。
如果該擴展標記為關鍵,CA則要保證分發點包含所用的撤銷原因代碼keyCompromise和/或CACompromise。若沒有首先從一個包含了原因代碼keyCompromise(對終端實體證書)或CACompromise(對CA證書)的指定的分發點檢索和核對CRL,證書使用系統將不使用該證書。在分配點為所有撤銷原因代碼和由CA(包括作為關鍵擴展的CRLDistributionPoint)發布的所有證書分配CRL信息的項中,CA不需要在CA項發布一個完整的CRL。
如果此擴展標記為非關鍵的,當證書使用系統未能識別此擴展項類型時,則只有在下列情況中,該系統使用此證書:
—— 它能從CA獲得一份完整CRL并檢查它(通過在CRL中設有發布點擴展項來指示最近的CRL是完整的);
—— 根據本地策略不要求撤銷檢查;或
—— 用其他手段完成撤銷檢查。
00010注 1:一個以上的CRL分發者對應一個證書CRL簽發者是可能的。這些CRL分發者和簽發CA的協調是CA策略的一個方面。
00011注 2:證書撤銷列表CRL的應用,請參照RFC 5280。
5.2.4.2.16 限制所有策略inhibitAnyPolicy
本擴展指定了一個限制,它指出了任何策略,對于從指定CA開始的認證路徑中的所有證書的證書策略,都認為不是顯式匹配。指定的CA要么是包含這個擴展的證書的主體CA(如果inhitanyPolicy值為0),要么是認證路徑(由非0值指定)中后繼認證機構CA。
id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::={id-ce 54}
InhibitAnyPolicy ::=SkipCerts
SkipCerts ::=INTEGER(0..MAX)
本擴展由證書頒發者選擇關鍵項還是非關鍵項。建議它標記為關鍵項,否則證書用戶可能不能正確地解釋認證機構CA設定的規則。
5.2.4.2.17 最新證書撤銷列表 freshestCRL
最新CRL擴展只被作為證書擴展使用,或在發給認證機構和用戶的證書中使用。該項標識了CRL,對CRL來說證書用戶應包含最新的撤銷信息(例如:最新的dCRL)。
該項定義如下:
id-ce-CRL freshestCRL OBJECT IDENTIFIER ::={id-ce 46}
freshestCRL::={CRLDistPointsSyntax}
根據證書頒發者的選擇,這個擴展可能是關鍵的,也可能是非關鍵的。如果最新的CRL擴展是關鍵的,那么證書使用系統不使用沒有首先進行撤銷和核對的最新CRL的證書。如果擴展被標記為不關鍵的,證書使用系統能使用本地方法來決定是否需要檢查最新的CRL。
5.2.4.2.18 個人身份標識碼 identifyCode
個人身份證號碼用于表示個人身份證件的號碼,其定義如下:
id-IdentifyCode OBJECT IDENTIFIER ::={1.2.86.11.7.1}
IdentifyCode ::=SET {
residenterCardNumber [0] PrintableString OPTIONAL,
militaryOfficerCardNumber [1] UTF8String OPTIONAL,
passportNumber [2] PrintableString OPTIONAL,
...
}
此擴展項標記為非關鍵的。
5.2.4.2.19 個人社會保險號insuranceNumber
個人社會保險號擴展項用于表示個人社會保險號碼,其定義如下:
ID- InsuranceNumber OBJECT IDENTIFIER ::={ 1.2.86.11.7.2 }
InsuranceNumber::= PrintableString
此擴展項標記為非關鍵的。
5.2.4.2.20 企業工商注冊號iCRegistrationNumber
企業工商注冊號擴展項用于表示企業工商注冊號碼,其定義如下:
ID-ICRegistrationNumber OBJECT IDENTIFIER ::={ 1.2.86.11.7.4 }
ICRegistrationNumber::= PrintableString
此擴展項標記為非關鍵的。
5.2.4.2.21 企業組織機構代碼organizationCode
企業組織機構代碼號擴展項用于表示企業組織機構代碼,其定義如下:
ID-OrganizationCode OBJECT IDENTIFIER ::={ 1.2.86.11.7.3 }
OrganizationCode::= PrintableString
此擴展項標記為非關鍵的。
5.2.4.2.22 企業稅號 taxationNumeber
企業稅號擴展項用于表示企業稅號碼,其定義如下:
ID- TaxationNumeber OBJECT IDENTIFIER ::={ 1.2.86.11.7. 5 }
TaxationNumeber::= PrintableString
此擴展項標記為非關鍵的。
5.2.4.2.23 統一社會信用代碼 uniformSocialCreditIdentifier
統一社會信用代碼擴展項用于每一個法人和其他組織在全國范圍內唯一的,終身不變的法定身份識別碼,其定義如下:
ID- UniformSocialCreditIdentifier OBJECT IDENTIFIER ::={ 1.2.156.XXXXXX.X.X.X.XX}
UniformSocialCreditIdentifier::= PrintableString
此擴展項標記為非關鍵的。
注:統一社會信用代碼的號碼等中國電子技術標準化研究院統一規劃給出。
5.2.4.3 專用因特網擴展 privateInternetExtensions id-pkix
5.2.4.3.1 綜述
本節定義了兩個應用于因特網公鑰基礎結構(PKI)的新擴展,用于指導應用以識別一個支持CA的在線驗證服務。其對象標識符如下
id-pkix OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) }
id-pe OBJECT IDENTIFIER ::= { id-pkix 1 }
每個擴展是一個IA5String 值的序列,每個值分別代表一個URI 。URI直接確定信息的位置和格式以及獲得信息的方式。
5.2.4.3.2 機構信息訪問authorityInfoAccess
本擴展項描述了包含該擴展的證書的簽發者如何訪問CA的信息以及服務。包括在線驗證服務和CA策略數據。該擴展可包括在用戶證書和CA證書中,且必須為非關鍵的。
id-pe- authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
AuthorityInfoAccessSyntax ::=
SEQUENCE SIZE (1..MAX) OF AccessDescription
AccessDescription ::= SEQUENCE {
accessMethod OBJECT IDENTIFIER,
accessLocation GeneralName }
id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
序列AuthorityInforAccessSyntax中的每個入口描述有關頒發含有該擴展的證書的CA附加信息格式和位置。信息的類型和格式由accessMethod字段說明;信息的位置由accessLocation字段說明。檢索機制可以由accessMethod表明或由acessLocaion說明。
本標準定義用于accessMethod的一個OID。當附加的信息列出了發行證書的CA高于發行該擴展的證書CA時,使用id-ad-caIssuers OID。
當id-ad-caIssuers以accessInfoType出現時,acessLocaion字段說明參考的描述服務器及獲得參考描述的訪問協議。AcessLocaion字段定義為GeneralName,它可有幾種形式:當信息可以通過http,ftp或ldap獲得時,acessLocaion必須是一個uniformResourceIdentifier類型。當信息可以通過目錄訪問協議獲得時,acessLocaion必須是一個directoryName類型。當信息可以通過電子郵件獲得時,acessLocaion必須是一個rfc822Name類型。
5.2.4.3.3 主體信息訪問subjectInformationAccess
本擴展描述了證書主體如何訪問信息和服務。如果主體是CA,則包括證書驗證服務和CA策略數據,主體是用戶,則描述了提供的服務的類型以及如何訪問它們,在這種情況下,擴展域/項中的內容在所支持的服務的協議的說明中定義。這個擴展項必須被定義為非關鍵的。
id-pe-SubjectInformationAccess OBJECT IDENTIFIER ::={ id-pe 11 }
SubjectInfoAccessSyntax ::=
SEQUENCE SIZE (1..MAX) OF AccessDescription
AccessDescription ::= SEQUENCE {
accessMethod OBJECT IDENTIFIER,
accessLocation GeneralName }
另外附錄A中規定了證書的結構,附錄B中列舉出數字證書結構實例,并制定了數據項的關鍵程度,附錄C中規定了證書撤銷列表內容,附錄D中提供了證書DER編碼供參考。
推薦文章: