x.509因特网公钥基础设施在线证书状态协议——OCSP( 三 )


ASN.1显示编码规则(DER)[x.690] 。
除非指定了其他,否则默认使用ASN.1外在标记 。从别处引用的的术语有:扩展
(Extensions),证书序列号(CertificateSerialNumber),主体公钥信息(SubjectPublicKeyInfo),
名称(Name),算法识别(AlgorithmIdentifier),证书撤消列表原因(CRLReason)
4.1请求
这一节描述了请求信息的ASN.1规范 。实际的信息格式根据所使用的传输机制
(HTTP,SMTP,LDAP等等)而不同 。
4.1.1 请求(信息)语法
OCSPRequest ::=SEQUENCE{
tbsRequestTBSRequest,
optionalSignature[0]EXPLICITSignatureOPTIONAL}
TBSRequest::=SEQUENCE{
version[0]EXPLICITVersionDEFAULTv1,
requestorName[1]EXPLICITGeneralNameOPTIONAL,
requestListSEQUENCEOFRequest,
requestExtensions[2]EXPLICITExtensionsOPTIONAL}
Signature::=SEQUENCE{
signatureAlgorithmAlgorithmIdentifier,
signatureBITSTRING,
certs[0]EXPLICITSEQUENCEOFCertificate
OPTIONAL}
Version::=INTEGER{v1(0)}
Request::=SEQUENCE{
reqCertCertID,
singleRequestExtensions[0]EXPLICITExtensionsOPTIONAL}
CertID::=SEQUENCE{
hashAlgorithmAlgorithmIdentifier,
issuerNameHashOCTETSTRING,--HashofIssuer"sDN
issuerKeyHashOCTETSTRING,--HashofIssuerspublickey
serialNumberCertificateSerialNumber}
发布者名称散列(issuerNameHash)是发布者显式名称的散列 。应该检测证书发布者名称
域的DER编码的散列 。发布者密钥散列(issuerKeyHash)是发布者公钥的散列 。对发布者
证书的主体公钥域的值(不包括标签和长度)进行散列 。所有这些使用的散列算法都由散列
算法域(hashAlgorithm)确定 。序列号域(serialNumber)是被查询状态证书的序列号 。
4.1.2 请求(信息)语法的注重点
除了对CA名称进行散列外还对CA的公钥进行散列,这样做的主要原因是为了识别发
布者,因为两个CA有可能选择同一名称(虽然建议使用独一无二的名称,但这并不是强制
要求的) 。然而,除非两个CA明确表示他们共享私钥或者其中一个CA的密钥是不安全的,
否则两个CA是不可能有相同的密钥 。
支持任何的扩展是可选的 。每一个可选扩展的重要性标志都不应该被设置 。章节4.4中
提到了一些有用的扩展 。其他的一些扩展也许会在其他的一些RFC中有所定义 。未被承认
的扩展必须被忽略 。(除非他们的重要性标志被设置而且未被理解)
响应器可以选择签名OCSP的请求 。在那种情况下,签名是根据TBS请求(tbsRequest)结构
计算得到的 。假如请求被签名,那么响应器可以在请求者名称域中识别处它的名称 。同样的,
为了签名请求,请求内容可以包括用来帮助OCSP响应器识别请求者签名内容的证书 。
4.2回复语法
本节描述了回复信息的ASN.1规范 。实际格式根据所使用的传输机制
(HTTP,SMTP,LDAP等等)而不同 。
4.2.1 OCSP回复的ASN.1规范
一个OCSP回复至少包括用来指示对先前请求所处理状态的回复状态域
(responseStatus) 。假如回复状态域的值达到某一种出错情况,那么回复字节(responseStatus)
将不被设置 。
OCSPResponse::=SEQUENCE{
responseStatusOCSPResponseStatus,
responseBytes[0]EXPLICITResponseBytesOPTIONAL}
OCSPResponseStatus::=ENUMERATED{
successful(0),--Responsehasvalidconfirmations
malformedRequest(1),--Illegalconfirmationrequest
internalError(2),--Internalerrorinissuer
tryLater(3),--Tryagainlater
--(4)isnotused
sigRequired(5),--Mustsigntherequest
unauthorized(6)--Requestunauthorized
}
回复字节(responseBytes)的值由对象标识和一个编码成OCTET字符串的回复标记(此

推荐阅读