雷曉娟 崔廣印 金 一
(北京中油瑞飛信息技術有限責任公司 北京 100007)
數字證書在電子交易支付過程中充當第三方擔保人角色,是唯一確認安全電子商務交易雙方身份的工具。證書有效與否關系到電子交易的安全性。傳統的CRL不能提供證書即時狀態,而OCSP能夠將證書的即時狀態實時反饋給應用系統,彌補了CRL的不足。在實際應用中,應用系統作為OCSP客戶端將證書查詢請求發送給OCSP服務器,OCSP響應器將查詢結果返回給客戶端,這個過程涉及到構造OCSP請求數據和解析OCSP響應數據兩個方面。本文結合應用實踐,就OCSP協議語法及特點進行分析討論。
OCSP請求語法分析
客戶端與服務器之間通訊需要遵循一套共同約定的語法向對方描述所傳遞的信息。OCSP協議作為一種標準協議是按照ASN.1描述在OCSP客戶端與服務器之間所傳遞的信息。OCSP請求是根據語法規則經過DER編碼的一組數據,這組數據包括協議版本號、請求者名字、請求信息、擴展項。請求語法如下:


在語法中數字簽名、請求者名稱以及擴展項是可以選擇的。在實際請求中可以有選擇的包含這些項,然而如果OCSP要求數字簽名,那么數字簽名項則是不可缺少的,否則OCSP相應器會返回一個sigRequired,告訴應用程序所發請求沒有經過數字簽名,如果OCSP對這個項沒有做特殊要求,在請求中則不必包含。需要注意的是:哈希算法標識;發布者名稱的哈希值;發布者公鑰的哈希值;要查詢的證書序列號是構成OCSP請求的關鍵項,是缺一不可的。
OCSP響應語法分析
客戶端接收到的是OCSP響應器返回的一個經過DER編碼的數據。OCSP響應器在接收到客戶端的請求后,至少會發送OCSPResponseStatus 枚舉結構中6種響應狀態的其中一種指明對請求的處理狀態。響應語法如下:

在以上OCSPResponse結構中,OCSPResponseStatus枚舉了6種OCSP對請求的處理狀態,“0”代表successful表示響應被有效確認,響應器會返回給客戶端responseBytes響應信息。

responseBytes是個比較大的數據體,其中包含證書標識符、證書狀態、響應有效時間等在內的大量信息,客戶端需要做好接收大數據的準備,在實際應用中這個數據體大約接近3千字節。證書狀態CertStatus,在OCSP協議中有3個響應標識符:good(0)、revoked(1)、unknown(2)。
0表示證書處于正常狀態(good);
1表示證書處于被撤銷狀態(revoked),在實際中這個意義會被擴展,不僅表示證書被撤銷,還可以表示證書被凍結和證書已經過期失效等狀態;
2表示證書處于未知狀態(unknown),說明所查詢的證書不是本CA所頒發。應用系統從responseBytes中提取所關心的證書狀態值以判斷證書的可信任性。 然而,如果OCSP響應器返回值指明對請求的處理狀態不是successful,而是OCSPResponseStatus 枚舉結構中其它5種響應之一,那么就沒有responseBytes響應信息返回。OCSPResponseStatus 枚舉結構中除0以外其余枚舉值都是OCSP相應器向客戶端說明請求被拒絕的原因,它們的含義分別是:
1 代表非法確認請求
2 代表發布者內部錯誤
3 代表稍候重試
4 代表必須對請求簽名
代表請求未被授權
當前,不僅在金融交易,在信息化程度高的大型企業已經把信息安全列入到企業信息化發展規劃中,使用數字證書實現身份認證和資源的訪問控制,將OCSP作為先進的證書查詢技術被應用,以OCSP作為主要證書狀態查詢手段,以CRL作為后備查詢工具。OCSP已經開始逐步替代CRL成為證書查詢的首選工具。
[1]ISO/IEC 8824-1:2002 抽象語法記法一(ASN.1 )第1部分:基本記憶規范.
[2]IETF(互聯網工程特別工作組)RFC2560.