概述
本文内容来自维基百科OCSP词条的翻译
在线证书状态协议(OCSP)是一个互联网协议,用于获取符合X.509标准的数字证书的状态。该协议符合互联网标准规范,文档RFC6960对其进行了详细地描述。OCSP协议的产生是用于在公钥基础设施(PKI)体系中替代证书吊销列表(CRL)来查询数字证书的状态,OCSP克服了CRL的主要缺陷:必须经常在客户端下载以确保列表的更新。通过OCSP协议传输的消息使用ASN.1的语义进行编码。消息类型分为“请求消息”和“响应消息”,因此致OCSP服务器被称为OCSP响应端。
与CRLs比较
与CRL相比OCSP消息中信息内容更少,这能减少网络的负担和客户端的资源;
由于OCSP响应端需要解析的信息更少,客户端提供的用于解析消息的库函数更简单;
OCSP向发起响应方公开了一个特定的网络主机在特定时刻所使用的特定证书。由于OCSP并不强制加密该证书,因此信息可能被第三方拦截
基本PKI应用场景
Alice和Bob使用Ivan颁发的数字证书。该场景中Ivan是数字证书认证中心(CA);
Alice向Bob发送其由Ivan颁发的数字证书,并发出请求建立连接的申请;
Bob担心Alice的私钥已经泄露,因此向Ivan发送’OCSP request’ 消息并包含Alice的数字证书序列号;
Ivan的OCPS响应端从Bob发送的消息中获取数字证书的序列号,并在CA数据库中查找该数字证书的状态;
Ivan向Bob发送由其私钥加密的消息’OCSP response’,并包含证书状态正常的信息;
由于Bob事先已经安装了Ivan的数字证书,因此Bob使用Ivan的公钥解密消息并获取到Alice的数字证书状态信息;
Bob决定与Alice进行通信
协议细节
数字证书状态交互消息包括下述两条:
Function | Allication | Purpose |
---|---|---|
OCSP Request | OCSP client | Request for the revocation status of a certificate |
OCSP Response | OCSP response | Provide the revocation status of a certificate |
OCSP Request消息包含以下数据:
协议版本
服务请求
目标证书标识
可能被OCSP响应器处理的可选扩展
在接受一个请求之后,OCSP响应端(通常是CA)检测是否:
信息正确格式化
响应器被配置提供请求服务而且
请求包含了响应器需要的信息,返回一个确定的回复,OCSP响应端回复的加密消息中包含证书的状态可以是’good’,’revoked’或者’unknown’
如果任何一个先决条件没有满足,那么OCSP响应器将产生一个错误信息,错误码可能包含以下内容:
- 未正确格式化的请求(malformedRequest)
- 内部错误(internalError)
- 请稍后再试(trylater)
- 需要签名(sigRequired)
- 未授权(unauthorized)
其他
OCSP的请求消息格式支持额外的扩展,这样在特殊的PKI场景中允许客户扩展其功能。
OCSP可能会遭受‘replay attacks’ 攻击。 当一个加密后的, 响应消息为‘good’的消息被恶意的中间方拦截,并在证书过期后再向客户端发送该消息,此时消息中所传递的证书状态已经与实际的证书状态不符。OCSP通过在请求消息和响应消息中加入‘nonce’来避免受该类攻击。然后,由于大部分OCSP的响应端和客户端都不支持使用‘nonce’扩展,而且CA回复的消息的有效性是几天时间,所以‘replay attacks’ 是系统的一个主要威胁。