在线证书状态协议(Online Certificate Status Protocol,简称OCSP)是维护服务器和其它网络资源安全性的两种普遍模式之一。它是一个无需证书撤消列表(CRL)就可决定数字证书当前状态的协议。本文详细介绍了它的概念、作用、工作原理等信息。
什么是OCSP
CA机构发布的“黑名单”,证书注销列表(CRL),存在一些缺点,如:必须经常在客户端下载以确保列表的更新。于是,存在另一种证书有效性的管理和查询方法,即在线查询机制。它使用的协议称为在线证书状态协议,英文是Online Certificate Status Protocol(OCSP)。
OCSP是IETF颁布的用于检查数字证书在某一交易时间是否有效的标准。该协议规定了服务器和客户端应用程序的通讯语法。OCSP给用户到期的证书一个宽限期,这样他们就可以在更新以前的一段时间内继续访问服务器。
OCSP优点
OCSP为网上业务提供了一种检验数字证书有效性的途径,它通过实时在线地向用户提供证书状态,比CRL处理速度更快、更方便,也更具独立性。并避免了令人头痛的逻辑问题和处理开销。
工作原理
当用户试图访问一个服务器时,会生成一个查询指定证书状态信息的请求,并将请求转发到一个OCSP应答器(服务器),应答器建立与CA证书库链接查询该证书的状态,然后回复“有效”、“注销”或“未知”的响应。
OCSP在线查询机制的工作流程如下:
OCSP请求
简单地说,一个OCSP请求由协议版本号、服务请求类型、目标证书标识、可能被OCSP响应器处理的可选扩展等信息组成。
OCSP响应器在接受请求后,会检测一下内容:
- 信息是否正确格式化
- 响应器是否被配置提供请求服务
- 请求是否包含了响应器需要的信息
注意:如果以上任何一个条件没有满足,OCSP响应器将产生一个错误信息。详细信息见本文下方特殊情况章节。
OCSP回复
一个OCSP请求相对的回复由回复类型和实际回复字节组成。所有确定的回复都必须经过数字签名,以保证这个信息的真实性和完整性。签名密钥属于CA,即颁发这张证书的权威、可信的第三方机构,因此,在任何情况下,用户都能够信任这个响应信息。一个确定的回复信息由以下组成:
- 回复语法的版本
- 响应器名称
- 对每一张被提及证书的回复,包括证书标识、证书状态值(有效、注销或未知)、回复有效期以及可选扩展
- 可选扩展
- 签名算法对象标识符号
- 对回复信息散列后的签名
详细信息见下表所示:
域 | 值或值的限制 |
---|---|
状态 | 响应状态。包括成功、请求格式错误、内部错误、稍后重试、请求没有签名和请求签名证书无授权,当状态为成功时必须包括以下各项。 |
版本 | V1 |
签名算法 | 签发OCSP的算法。使用SHA1 With RSA Encryption (OID:1.2.840.113549.1.1.5)算法签名。 |
颁发者 | 签发OCSP的实体。欠打这公钥的SHA1数据摘要值和证书甄别名。 |
产生时间 | OCSP响应的产生时间。 |
证书状态列表 | 包括请求中所查询的证书状态列表。每个证书状态包括证书标识、证书状态以及证书注销信息。 |
证书标识 | 包括数据摘要算法(SHA1,OID:1.3.14.3.2.26)、证书甄别名数据摘要值、证书公钥数据摘要值和证书序列号。 |
证书状态 | 证书的最新状态。包括有效、注销和未知。 |
证书注销信息 | 当返回证书状态为注销时,包含注销时间和注销原因。 |
特殊情况
OCSP响应器会返回一个出错信息。这些信息无须签名。错误信息可以是以下一些内容:
- 未正确格式化的请求(malformedRequest),如:接受到一个没有遵循OCSP语法的请求。
- 内部错误(internalError),表示OCSP响应器处于一个不协调的内部状态。
- 请稍后再试(trylater),表示OCSP响应器存在,但暂时不能响应。
- 需要签名(sigRequired),表示服务器需要客户端签名请求后才能产生一个回复。
- 未授权(unauthorized),表示客户端未被授权允许向这台服务器发送请求。
另外,OCSP在线查询机制只能检测证书的注销状态,没有其他功能,如:不能检查证书的有效期。但是这种用法对于验证证书的有效性来说是快速有效的。
由于使用OCSP在线查询必须保持用户在线状态,且用户访问的对象集中在CA机构的OCSP服务器上,这同样会带来高峰负载过重,交通拥塞效率下降的问题。
更多信息
作为CA机构公布的“黑名单”,证书吊销列表(CRL),它与OCSP这两种机制所针对的目标和实现的功能是一样的,只不过实现的方法途径不一样。有关CRL信息,参阅CRL概览。