6.3 證書撤銷列表
6.3.1 證書撤銷列表概述
證書撤銷列表(CRL)用來列出那些已被撤銷或凍結的但并未過期的證書。證書撤銷的原因多種多樣,例如日常的管理撤銷(當證書的主體離開了發放組織,或責任和證書屬性發生了變化),或私鑰被泄密。“凍結”是指CA不再確保證書主體和公鑰之間的綁定。
X.509 v2證書撤銷列表格式增加了一些可選擴展,在概念上與證書擴展相似。CAs應能產生如下的X.509 v2 CRLs,當驗證證書認證路徑時客戶也應能處理它們。頒發CRLs的CA不一定必須是頒發該撤銷證書的CA。一些CAs只負責發放CRLs。X.509 v2 CRL 包含以下信息:
· Version 版本;
· Issuer Signature Algorithm 頒發者簽名算法;
· Issuer Distinguished Name 頒發者可辨別名;
· This Update 本次更新;
· Next Update 下次更新;
· Revoked Certificates 撤銷的證書,零個或多個以下序列的序列:
?Certificate Serial Number 證書序列號,
?Revocation Date 撤銷日期,
?CRL Entry Extensions CRL Entry擴展(可選);
· CRL Extensions CRL 擴展(可選);
6.3.2 CRL字段
X.509 v2 CRL 的 ASN.1 句法見附錄A。對于簽名計算,簽名的輸入數據是ASN.1 DER 形式的編碼。ASN.1 DER 編碼對每一個元素來說都是標簽,長度,值的編碼系統。以下各項描述了X.509 v2 CRL的使用
a) Version
這個字段描述了編碼后的CRL的版本。該字段的值應是1,表明是v2 CRL 。
b) Signature
該字段包含簽署CRL的算法的算法標識符。它的內容與證書的signature字段一樣。關于這個字段的信息見6.2.1中關于signature字段的定義。CRL可以被5.2.2.3中標識的任何算法簽名;通常,CA使用同一算法來對證書和CRL簽名。
c) Issuer Name
issuer字段提供了簽署CRL的CA的全球唯一標識名。頒發者的名字是X.500 可辨別名。本標準不支持CRL頒發者名字為空的CRL。
d) This Update
thisUpdate 字段指定了該CRL的日期。此字段可以是UTCTime或GeneralizedTime。對于本標準,thisUpdate字段遵從證書的validity字段的規則。(見6.2.1)
e) Next Update
nextUpdate字段指定了下一個CRL頒發的日期。下一個CRL頒發的日期可以在指定日期之前,但不可在指定日期之后。此字段可以是UTCTime或GeneralizedTime。對于本標準,nextUpdate字段遵從證書的validity字段的規則。(見6.2.1)
f) Revoked Certificates
revokedCertificates 字段是一個已經被撤銷的證書的列表。每個被撤銷證書包含:
1)證書序列號(在userCertificate字段中指出)。它包含被撤銷證書的serialNumber字段的值。它必須與頒發CA的名字一起使用以識別一個已經被撤銷但還未到期的證書。
2)包含撤銷日期的revocationDate 字段,本字段取值遵從證書的validity字段的規則。(見6.2.1)
6.3.3 CRL擴展
ISO/ITU所定義的X.509 v2 CRLs擴展提供了對全部CRLs附加其它信息的方法。每個CRL擴展被設計為critical 或 noncritical。(關鍵的或非關鍵的)如果客戶碰到一個不能處理的關鍵性擴展,將無法對該CRL進行驗證。
本條描述了應被支持的CRL擴展。當CA能夠產生一個CRL的擴展且客戶能夠處理該擴展時,此CRL擴展才有效。
a) 機構密鑰標識符
authorityKeyIdentifier,非關鍵性CRL擴展,標識了CA用來簽署CRL的密鑰。當CA使用多個密鑰時該擴展是有用的;它使得不同的密鑰得以區分(例如,密鑰更新時)。身份的鑒定可基于密鑰標識符或發放者名字和序列號。所有的CRLs都應有密鑰標識名。當發放者擁有多個簽名密鑰時(或多個密鑰對,或是在密鑰更新期間),該擴展是很有用的。當發放CA有多個簽名密鑰對時,在所有的CRL擴展里都應包括該擴展,并且客戶也應能夠找到并驗證CRL驗證路徑。客戶如果要查找證書認證路徑,必須能夠處理 authorityKeyIdentifier的密鑰標識符或證書發放者名加上序列號。
b) 頒發者別名
issuerAltName ,非關鍵性CRL擴展字段,包含一個或多個CA別名。別名一旦出現就放置在issuesrAltName里。并非所有的別名格式都要被識別處理,識別不出的別名格式可以被忽略。CA可在CRLs中產生該擴展,然而客戶可以不予處理。
c) CRL編號
cRLNumber,非關鍵性擴展字段,是一個單調增加的序列號,該CRL由CA通過特定的CA目錄入口或CRL分布點發放。該擴展可以用來通知證書使用者整個CRL的非固定時間發布,或是便于確定何時某一CRL替代了另一CRL。在CRL中應該包括該擴展。
d) 頒發分布點
issuingDistributionPoint 字段是非關鍵性的擴展,決定了一個特定CRL的CRL分布點。一個分布點就是一個用來檢索CRL的目錄入口,它可以與CA的目錄入口不 同。CA要用密鑰對CRL加密。CRL分布點沒有自己的密鑰對。
另外,issuingDistributionPoint字段指定的CRLs可能只針對終端實體的證書,或者只針對CA證書,或者只針對由于某種特定原因撤銷的證書。最后,該擴展也可以確定一個間接CRL,間接CRL是由與發放被撤銷證書CA不同的CA發放的。間接CRL包含以下組件:
· distributionPoint,給出了分布點的名字,遵循X.500標識名規則;
· onlyContainsUserCerts,布爾變量,表明該CRL只包含終端實體證書;
· onlyContainsCACerts,布爾變量,表明該CRL只包含CA證書;
· onlySomeReasons,一個ReasonFlag位串,標明CRL中所列證書的撤銷原因;如下:
?keyCompromise,表明密鑰泄漏或懷疑密鑰泄漏,
?cACompromise,表明該證書撤銷的原因是CA密鑰泄漏,它只用于撤銷CA證書,
?affiliationChanged,表明該證書撤銷的原因是證書主體的從屬關系改變了,
?superseded,表明該證書已被代替,
?certificateHold,表明證書處于凍結狀態,可能會被撤銷,
?cessationOfOperation,表明該證書的目的已經不再被需要,但并不是密鑰被泄漏;
· IndirectCRL,布爾變量,表明這是一個間接CRL。
客戶應能處理這個字段。
e) 增量CRL指示符
deltaCRLIndicator 是一個關鍵CRL擴展,它確定一個增量CRL。對于那些采用非CRL結構存儲撤銷信息的用戶程序來說,增量CRL可以有效地節省處理時間。它允許把變化的信息增加到本地數據庫里,忽略掉那些本地數據庫中已經存在的未改變的信息部分。
BaseCRLNumber的值表明基礎CRL的CRL序列號,基礎CRL是生成增量CRL的開始點。增量CRL包含基礎CRL和當前CRL之間的變化部分。是否提供增量CRL要由CA來決定。
客戶可以利用本地CRL和增量CRL合成一個CRL,要注意的是如果本地CRL的CRL序列號小于增量CRL中的BaseCRLNumber,合成的CRL就不正確。如果增量CRL含有一個CRL序號擴展,那么合成的CRL的CRL序號就是該擴展的值。客戶和CA是否支持增量CRL是可選的。
f) CRL擴展使用總結
表1總結了標準CRL擴展,表2總結了這些標準CRL擴展的使用。
6.3.4 CRL Entry擴展
X.509 v2 CRLs所定義的 Entry擴展提供了獲取CRL每條附加信息的方法。每個CRL Entry擴展被設計為關鍵性或非關鍵性。如果不能處理關鍵性擴展,該CRL的驗證將是無效的。如果是不可識別的非關鍵性CRL Entry擴展,則可以忽略。
a) 原因代碼
reasonCode 是非關鍵性CRL Entry擴展,標明了證書撤銷原因。CA應當能夠生成該擴展,但客戶是否要處理reasonCode擴展則是可選的。下面列舉的是reasonCode的取值:
· unspecified,未使用;
· keyCompromise,表明密鑰泄漏或懷疑泄漏;
· cACompromise,表明該證書撤銷的原因是CA密鑰泄漏,它只用于撤銷CA證書;
· affiliationChanged,表明該證書撤銷的原因是證書主體的從屬關系改變了;
· superseded,表明該證書已被新的證書代替;
· cessationOfOperation,表明該證書的功能已經不需要,并不是密鑰泄漏;
· certificateHold , 表明證書當前不能使用,如果證書的CRL的reasonCode字段是 certificateHold,那么客戶就無法驗證證書認證路徑;
· removeFromCRL,只與增量CRL 一塊使用,表明應該刪除一個存在的CRLEntry。
b) 過期日期
expirationDate ,非關鍵性CRL Entry擴展,表明Entry的過期時間。該擴展不在CRLs中使用,也不被客戶使用。
c) 指令碼
instructionCode是非關鍵性CRL Entry擴展,提供了一個注冊過的指令標識符,指令標識符來指出當遇到一個被凍結的證書時要采取何種操作。本擴展不在CRL中使用。
d) 無效日期
invalidityDate是非關鍵性CRL Entry擴展,指出知道密鑰泄漏或懷疑泄漏的日期,即證書無效的日期。該日期必須比CRL Entry中的撤銷日期要早。而CRL Entry中的撤銷日期表明的是CA撤銷證書的日期。無論是否可以獲得此信息,都應該鼓勵CAs將此信息與CRL用戶共享。CAs在CRLs中生成該擴展,取值的形式是GeneralizedTime。
e) 證書發放者
certificateIssuer和間接CRL一起使用,(間接CRL,是issuingDistributionPoint擴展中有indirectCRL標識符的CRL)。如果該擴展沒有在間接CRL的第一個Entry中標出,那么該證書的發放者默認為CRL發放者。在間接CRL隨后的Entry里,如果沒有給出certificateIssuer,則認為證書發放者與前一個CRL Entry的發放者相同。
f) CRL Entry擴展使用總結
表3總結了CRL Entry擴展,表4總結了本標準中CRL Entry擴展的使用。
推薦文章: