x509因特网公钥基础设施在线证书状态协议OCSP中文版.docx
- 文档编号:23672209
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:15
- 大小:24.10KB
x509因特网公钥基础设施在线证书状态协议OCSP中文版.docx
《x509因特网公钥基础设施在线证书状态协议OCSP中文版.docx》由会员分享,可在线阅读,更多相关《x509因特网公钥基础设施在线证书状态协议OCSP中文版.docx(15页珍藏版)》请在冰豆网上搜索。
x509因特网公钥基础设施在线证书状态协议OCSP中文版
NetworkWorkingGroupM.Myers
RequestforComments:
2560VeriSign
Category:
StandardsTrackR.Ankney
CertCo
A.Malpani
ValiCert
S.Galperin
MyCFO
C.Adams
EntrustTechnologiesJune1999
x.509因特网公钥基础设施在线证书状态协议——OCSP
(RFC2560X.509InternetPublicKeyInfrastructureOnlineCertificateStatusProtocol–OCSP)
本备忘录的状态
本文档讲述了一种Internet社区的Internet标准跟踪协议,它需要进一步进行讨论和建
议以得到改进。
请参考最新版的“Internet正式协议标准”(STD1)来获得本协议的标准化
程度和状态。
本备忘录的发布不受任何限制。
版权声明
Copyright(C)TheInternetSociety(1999).AllRightsReserved.
1.摘要
本文档描述了无需证书撤消列表就可以决定一张数字证书当前状态的协议。
附加描述
PKIX操作必要条件的机制在另外的文档中有详细说明。
第二章中有协议的概述。
功能必要条件在第三章中有详细描述。
第四章是具体协议。
第五章我们将讨论一些和协议有关的安全问题。
附录A定义了在HTTP之上的OCSP,附录B有ASN.1的语义元素,附录C详细描述了信息的mime类型。
本文档中的关键字"MUST","MUSTNOT","REQUIRED","SHALL","SHALLNOT",
"SHOULD","SHOULDNOT","RECOMMENDED","MAY",and"OPTIONAL"同
RFC2119中的叙述一样。
2.协议概述
作为检查定期证书撤消列表的补充,有些场合下必须要获得一些有关证书撤消状态的即时信息。
(RFC2459章节3.3)例如涉及大量资金的交易或者股票买卖。
在线证书状态协议(OCSP)使得应用程序可以测定所需要检验证书的(撤消)状态。
OCSP。
一个OCSP客户端发布一个状态查询给一个OCSP响应器并且侦听当前证书直到响应器提供了一个响应。
这个协议描述了在应用程序检查证书状态和服务器提供状态之间所需要交换的数据。
2.1请求
一个OCSP请求包含以下数据
——协议版本
——服务请求
——目标证书标识
——可能被OCSP响应器处理的可选扩展
在接受一个请求之后,一个OCSP响应器检测是否:
1.信息正确格式化
2.响应器被配置提供请求服务而且
3.请求包含了响应器需要的信息,如果任何一个先决条件没有满足,那么OCSP响应器将
产生一个错误信息;否则的话,返回一个确定的回复。
2.2回复
OCSP回复可以有几种类型。
一个OCSP回复由回复类型和实际回复字节组成。
有一种OCSP基本回复类型必须被所有的OCSP服务器和客户端支持。
本章的其余部分都仅适用于这个回复类型。
所有确定的回复都应被数字签名。
被用来签名回复信息的密钥必须是下列中的一个
——颁发所涉及证书的CA
——一个被信任的响应器,它的公钥被请求者信任
——一个CA指派的响应器(被授权的响应器),它具有一张由CA直接颁发的用来表示此响应器可以为本CA发布OCSP回复的特别标记证书。
一个确定的回复信息由以下组成:
——回复语法的版本
——响应器名称
——对每一张被提及证书的回复
——可选扩展
——签名算法对象标识符号
——对回复信息散列后的签名
对每一张被请求证书的回复包括
——目标证书识别
——证书状态值
——回复有效期
——可选扩展
这个说明定义了以下在证书状态值中使用的一些确定回复识别:
——良好
——已撤消
——未知
“良好”状态表示一个对状态查询的积极回复。
至少,这个积极回复表示这张证书没有被撤消,但是不一定意味着这张证书曾经被颁发过或者产生这个回复在证书有效期内。
回复扩展可以被用来传输一些附加信息,响应器由此可以对这张证书的状态做出一些积极的声明,诸如(已颁发)保证,有效期等等。
“已撤消”状态表示证书已被撤消(无论是临时性的还是永久性的(待判断))
“未知”状态表示响应器不知道请求的证书。
2.3例外情况
万一出错,OCSP响应器会返回一个出错信息。
这些信息无须签名。
出错信息可以是以下一些类型
——未正确格式化的请求(malformedRequest)
——内部错误(internalError)
——请稍后再试(trylater)
——需要签名(sigRequired)
——未授权(unauthorized)
如果接受到一个没有遵循OCSP语法的请求,服务器产生“未正确格式化的请求”回复。
回复“内部错误”表示OCSP响应器处于一个不协调的内部状态。
请求需要再试,暗示尝试另一个响应器。
如果OCSP响应器正在工作,但是不能返回被请求证书的状态,那么“稍后再试”回复能被用来表示服务存在,但暂时不能响应。
当服务器需要客户端签名请求后才能产生一个回复时,回复“需要签名”将被返回。
当客户端未被授权允许向这台服务器发送请求时,回复“未授权”将被返回。
2.4此次更新(thisUpdate),下次更新(nextUpdate)和产生时间(producedAt)的语义回复信息可以在其中包含三种时间——此次更新,下次更新和产生时间。
这些域的语义如下:
——此次更新:
此证书状态被表示为正确的时间
——下次更新:
在此时间之后,可获得此证书状态的新近信息
——产生时间:
OCSP签名这个回复的时间
如果响应器未设置下次更新,那意味着新近的撤消信息在任何时候都可以被获得。
2.5回复预产生
OCSP响应器可以预先产生用来描述在某个确定时间此证书状态的已签名回复。
通过在回复的此次更新域的反映,获得此状态的时间可以被正确认识。
下次新近信息则反映在下次更新域中,与此同时产生这个回复的时间则出现在回复的产生时间域中。
2.6OCSP签名权威代表
用来签名证书状态信息的密钥不一定需要和签名此证书的密钥相同。
通过发布一张包含有扩展密钥用途域唯一值的OCSP签名者证书证书发布者,可以明确的指派OCSP签名权威机构。
这张证书必须直接由认知的CA颁发给响应器。
2.7当CA密钥不安全
如果一个OCSP响应器知道一个特定的CA私钥不安全,那么针对所有这个CA颁布的证书都可以返回一个撤消状态。
3功能必要条件
3.1证书内容
为了传达给OCSP客户端一个知道的信息获取点,CA们可以在权威机构信息获取扩展(可以被检测用来使用OCSP)提供这样的能力。
作为另外一种选择,也可以在OCSP客户端本地配置OCSP提供者获取地(信息)。
支持OCSP服务的CA,无论是自身实现还是通过授权响应器来提供,都必须提供包括统一资源识别形式的获取地信息和在一个获取描述序列中的对象识别符号形式的获取方法。
在主体证书的获取地域中的值定义了使用什么传输(例如HTTP)来获取OCSP响应器并且可以包含其他传输相关信息(例如URL)。
3.2已签名回复的接受条件
在接受一个已签名的回复为有效之前,OCSP客户端必须确认:
1.在回复信息中所指的证书和相应请求中所指证书一致。
2.回复中的签名有效。
3.签名者的身份和相映应接受请求者匹配。
4.签名者正被授权签名回复。
5.表示状态被认为是正确的时间(此次更新)足够新。
6.如果有的话,下次更新的时间应该晚于现时时间。
4.具体协议
这个ASN.1语法引用了在RFC2459中定义的术语。
至于签名运算,被签名的数据使用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.1OCSP回复的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字符串的回复标记(此标记由刚才的对象标识确定)组成。
ResponseBytes:
:
=SEQUENCE{
responseTypeOBJECTIDENTIFIER,
responseOCTETSTRING}
对于基本的OCSP回复,回复类型是id-pkix-ocsp-basic。
id-pkix-ocspOBJECTIDENTIFIER:
:
={id-ad-ocsp}
id-pkix-ocsp-basicOBJECTIDENTIFIER:
:
={id-pkix-ocsp1}
OCSP响应器应该有能力产生id-pkix-ocsp-basic回复类型的回复。
同样的,OCSP客户端也应该有能力接受并且处理id-pkix-ocsp-basic类型的回复。
回复的值应该是基本OCSP回复(BasicOCSPResponse)的DER编码。
BasicOCSPResponse:
:
=SEQUENCE{
tbsResponseDataResponseData,
signatureAlgorithmAlgorithmIdentifier,
signatureBITSTRING,
certs[0]EXPLICITSEQUENCEOFCertificateOPTIONAL}
签名值应该对回复数据(ResponseData)的DER编码上的散列计算而得。
ResponseData:
:
=SEQUENCE{
version[0]EXPLICITVersionDEFAULTv1,
responderIDResponderID,
producedAtGeneralizedTime,
responsesSEQUENCEOFSingleResponse,
responseExtensions[1]EXPLICITExtensionsOPTIONAL}
ResponderID:
:
=CHOICE{
byName[1]Name,
byKey[2]KeyHash}
KeyHash:
:
=OCTETSTRING--SHA-1hashofresponder'spublickey
(不包括标签和长度域)
SingleResponse:
:
=SEQUENCE{
certIDCertID,
certStatusCertStatus,
thisUpdateGeneralizedTime,
nextUpdate[0]EXPLICITGeneralizedTimeOPTIONAL,
singleExtensions[1]EXPLICITExtensionsOPTIONAL}
CertStatus:
:
=CHOICE{
good[0]IMPLICITNULL,
revoked[1]IMPLICITRevokedInfo,
unknown[2]IMPLICITUnknownInfo}
RevokedInfo:
:
=SEQUENCE{
revocationTimeGeneralizedTime,
revocationReason[0]EXPLICITCRLReasonOPTIONAL}
UnknownInfo:
:
=NULL——这个可以被一个列举代替。
4.2.2OCSP回复的注意点
4.2.2.1时间
此次更新和下次更新域定义了一个推荐的有效期。
一个时间长度和证书撤消列表中的{此次更新,下次更新}时间长度相一致。
如果下次更新的值早于当前本地系统时间,那么这个回复将被认为不可靠。
如果此次更新的值晚于当前本地系统时间,那么这个回复也将被认为不可靠。
回复中没有设置下次更新值等价于CRL没有确定的下次更新时间(见章节2.4)产生时间是这个回复被签名的时间。
4.2.2.2被授权的响应器
用来签名证书状态信息的密钥可以和签名证书状态的密钥不同。
但是必须保证签名这个信息的实体已被授权。
所以证书发布者必须自己签名OCSP回复或者明确的指派这个权利给其他实体。
OCSP签名代表可以通过包含在OCSP回复签名者证书扩展密钥用途扩展中的id-kp-OCSPSigning来指派。
这张证书必须直接由颁布所涉及证书的CA发布。
id-kp-OCSPSigningOBJECTIDENTIFIER:
:
={id-kp9}
依赖OCSP回复的系统和应用程序必须由能力探测并且执行id-ad-ocspSigning值的使用,如前所述。
他们可以提供一种本地配置一个或更多个OCSP签名权威机构的方法,而且可以指定一组被信任的签名权威机构。
当要求验证回复上签名的证书未满足以下一个标准时,他们必须拒绝这样的回复:
1.和本地配置的对所涉及证书的OCSP签名权威机构匹配;或者
2.和颁发所涉及证书的CA相同;或者
3.包括在扩展密钥用途扩展中的id-ad-ocspSigning值,这种证书由颁发所涉及证书的CA颁发。
回复本身或者用来验证回复上签名的证书可以应用其他接受或者拒绝的标准。
4.2.2.2.1已授权响应器的撤消检查
既然一个已授权的OCSP响应器可以为一个或多个CA提供状态信息服务,OCSP客户端需要明白如何确定被授权的响应器的证书没有被撤消。
CAS可以选择以下三种方法之一来处理这个问题:
——一个CA可以指定OCSP客户端能够在响应器证书生存期内信任该响应器。
这个CA通过(在证书中)包括id-pkix-ocsp-nocheck。
这个(扩展)应该是非重要扩展。
扩展的值可以为空。
CA颁发这样这样一张证书应该意识到响应器密钥的不安全问题,这和用来签名证书撤消列表的CA密钥的不安全问题同样严重,至少在证书有效期内是这样。
CA也可以选择发布生命周期非常短的此类型证书并且频繁更新它。
id-pkix-ocsp-nocheckOBJECTIDENTIFIER:
:
={id-pkix-ocsp5}
——一个CA可以指定如何检查响应器的证书是否被撤消。
如果应该使用证书撤消列表或者证书撤消列表发布点来检查,那么也能够使用证书撤消列表来完成确定响应器证书是否被撤消,或者如果其他应该使用其他的方法那么权威机构信息获取。
指定这两种机制的细节可以在RFC2459中获得。
——一个CA可以选择不指定任何方法来检查响应器证书的有效性(是否被撤消),在这些情况中,是由OCSP客户端的本地安全策略来决定证书是否检查证书有效性(是否被撤消)。
4.3强制和可选的加密算法
那些请求OCSP服务的客户端应该有能力处理DSA密钥的签名,这些DSA密钥通过RFC2459章节7.2.2中描述的DSAsig-alg-oid来识别。
客户端应该同样有能力处理在RFC2459章节7.2.1描述的RSA签名。
OCSP响应器可应该支持SHA1散列算法。
4.4扩展
这一节定义了一些标准扩展,基于X.509版本3证书所使用的扩展模型(请见RFC2459)。
支持所有这些扩展对客户端和响应器都是可选的。
对于每一个扩展,定义表示了它的语法,由OCSP响应器实现处理过程,而且在相应的回复中包括任意扩展。
4.4.1随机数
随机数很秘密的绑定了请求和回复,用来防止重发(replayattacks)攻击。
随机数作为一个请求扩展被包括在请求中,同样的也作为一个回复扩展被包括在回复中。
在请求和回复中,随机数由对象标识id-pkix-ocsp-nonce识别,其中extnValue包含了随机数的值。
id-pkix-ocsp-nonceOBJECTIDENTIFIER:
:
={id-pkix-ocsp2}
4.4.2证书撤消列表参考
也许想OCSP响应器指出可以发现已撤消或正保持证书的证书撤消列表。
当OCSP在仓库之间使用而且作为一个审核机制时这个是很有用的。
这个证书撤消列表可以由一个同一资源定位(URL)(证书撤消列表可以从这个URL中获得),或由一个序列号(证书撤消列表序列号)或者由一个时间(相关证书撤消列表产生的时间)来指定。
这些扩展作为单一扩展(singleExtensions)来描述。
这个扩展的标识是id-pkix-ocsp-crl,值是CrlID。
id-pkix-ocsp-crlOBJECTIDENTIFIER:
:
={id-pkix-ocsp3}
CrlID:
:
=SEQUENCE{
crlUrl[0]EXPLICITIA5StringOPTIONAL,
crlNum[1]EXPLICITINTEGEROPTIONAL,
crlTime[2]EXPLICITGeneralizedTimeOPTIONAL}
如果选择使用证书撤消列表的同一资源定位,那么IA5字符串被用来定义这个可获得证书撤消列表的同一资源定位(URL)。
如果是证书撤消列表序列号,那么用整数来描述相关证书撤消列表的证书撤消列表序列号扩展。
如果是证书撤消列表时间,那么标准化时间被用来表示这个相关证书撤消列表发布的时间。
4.4.3可接受的回复类型
一个OCSP客户端可以希望指定一个它所理解的回复类型。
为了达到这样的目的,它应该使用id-pkix-ocsp-response对象标识符的扩展,并且值为可接受回复
(AcceptableResponses)。
这个扩展作为一个请求扩展被包括在请求中。
在可接受回复中包括了这个客户端可接受的不同回复类型的对象标识符号(例如,id-pkix-ocsp-basic)。
id-pkix-ocsp-responseOBJECTIDENTIFIER:
:
={id-pkix-ocsp4}
AcceptableResponses:
:
=SEQUENCEOFOBJECTIDENTIFIER
如同章节4.2.1所提到的那样,OCSP响应器应该有能力回复一个id-pkix-ocsp-basic的回复类型。
OCSP客户端也应该有能力接受并处理id-pkix-ocsp-bas
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- x509 因特网 基础设施 在线 证书 状态 协议 OCSP 中文版