7.2 請求
本條規定了確定請求的ASN.1規范。根據所使用的傳輸機制(HTTP、SMTP、LDAP等),實際的消息格式可能會發生相應的變化。
7.2.1 請求語法
OCSPRequest ::= SEQUENCE {
tbsRequest TBSRequest,
optionalSignature [0] EXPLICIT Signature OPTIONAL }
TBSRequest ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
requestorName [1] EXPLICIT GeneralName OPTIONAL,
requestList SEQUENCE OF Request,
requestExtensions [2] EXPLICIT Extensions OPTIONAL }
Signature ::= SEQUENCE {
signatureAlgorithm AlgorithmIdentifier,
signature BIT STRING,
certs [0] EXPLICIT SEQUENCE OF Certificate
OPTIONAL}
Version ::= INTEGER { v1(0) }
Request ::= SEQUENCE {
reqCert CertID,
singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL }
CertID ::= SEQUENCE {
hashAlgorithm AlgorithmIdentifier,
issuerNameHash OCTET STRING, -- 發布者名稱的哈希
issuerKeyHash OCTET STRING, -- 發布者公開密鑰的哈希
serialNumber CertificateSerialNumber }
issuerNameHash是發布者唯一名稱的哈希值。該值對所檢查證書的發布者名稱字段的DER編碼進行計算。issuerKeyHash是發布者公鑰的哈希值。該值將通過對發布者證書中的主體公鑰字段(不含標記和長度)進行計算。hashAlgorithm字段用來指明這些哈希計算所使用的哈希算法。serialNumber是請求其狀態的證書的序列號。
7.2.2 請求語法的注解
既使用CA公開密鑰的哈希值又使用CA名稱的哈希值來標識某個發布者的主要原因,是兩個CA可能使用相同的名稱(雖然推薦名稱的唯一性,但并不強制)。但是,兩個CA的公開密鑰是不可能相同的,除非兩者都決定共享私鑰,或一方的密鑰發生泄漏。
請求者可以選擇對OCSP請求進行簽名。這種情況下,將針對tbsRequest結構來驗證簽名。如果請求被簽名,請求者應在requestorName中指定其名稱。同時,對于已簽名的請求,請求者可在Signature的certs字段中包含有助于OCSP響應器驗證請求者簽名的那些證書。
推薦文章: