调研报告:OCSP协议
OCSP协议调研
1. OCSP概念
l 在线证书状态协议(OCSP)是一个互联网协议,用于获取符合X.509标准的数字证书的状态(来源于:RFC6960)
l 功能:在公钥基础设施(PKI)体系中替代证书吊销列表(CRL)来查询数字证书的状态
l 消息类型分为“请求消息”和“响应消息”,因此 OCSP 服务器被称为OCSP响应端
l 数字证书状态交互消息包括下述两条:
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 |
l OCSP Request消息包含以下数据:
l 协议版本
l 服务请求
l 目标证书标识
l 可能被OCSP响应器处理的可选扩展
2. OCSP 检测流程
浏览器在获得Web服务器的公钥证书后,开始验证公钥的合法性,这里会向该公钥的扩展信息中提供的OCSP Server地址发送OCSP Response,获得响应后,确认证书有效,再继续跟Web服务器通信。
3. 基本PKI场景
l Alice和Bob使用Ivan颁发的数字证书。该场景中Ivan是数字证书认证中心(CA)
l Alice向Bob发送其由Ivan颁发的数字证书,并发出请求建立连接的申请
l Bob担心Alice的私钥已经泄露,因此向Ivan发送’OCSP request’ 消息并包含Alice的数字证书序列号
l Ivan的OCPS响应端从Bob发送的消息中获取数字证书的序列号,并在CA数据库中查找该数字证书的状态
l Ivan向Bob发送由其私钥加密的消息’OCSP response’,并包含证书状态正常的信息
l 由于Bob事先已经安装了Ivan的数字证书,因此Bob使用Ivan的公钥解密消息并获取到Alice的数字证书状态信息。Bob决定与Alice进行通信
4. OCSP 的优/缺点
l 优点:
l 相对于CRL方式,证书吊销后,CA Server可以立刻将吊销信息发送给浏览器,生效时间快
l 缺点:
l 浏览器的每次HTTPS请求创建,都需要连接CA OCSP Server进行验证。同时,OCSP的验证有网络IO,花费了很长的时间,严重影响了浏览器访问服务器的用户体验
l 在浏览器发送服务器HTTPS证书序号到CA OCSP Server时,也将暴露了用户的隐私,将用户访问的网址透漏给了CA OCSP Server
5. OCSP Stapling
l OCSP Stapling的方案是解决了CRL、OCSP的缺点,将通过OCSP Server获取证书吊销状况的过程交给Web 服务器来做,Web 服务器不光可以直接查询OCSP信息,规避网络访问限制、OCSP服务器离用户的物理距离较远等问题,还可以将查询响应缓存起来,给其他浏览器使用。由于OCSP的响应也是具备CA RSA私钥签名的,所以不用担心伪造问题。
l 解决了访问慢的问题
l 解决了用户隐私泄露的问题
l 目前支持该扩展的证书的CA厂商有Let's Encrypt。如果使用的是openssl 1.1.0 以前的版本,可以使用11.3.6.1.5.5.7.1.24 = DER:30:03:02:01:05 来指定。RFC比如生成csr的时候,在openssl.cnf中增加:
l 如果是使用openssl 1.1.0或更高的版本,可以这样设置:
6. OCSP机制衍生出来的问题
l 如果浏览器在检查证书吊销状态时,得不到OCSP server的响应,会采取两种方式:
l Hard-fail:拒绝该证书信息,并且拒绝后续的HTTPS通讯
l Soft-fail:信任该证书,认为没有被吊销
l 如果是hard-fail模式,那浏览器对任何HTTPS服务器访问的先决条件都取决于OCSP Server,这将是一个致命的单点故障
l 如果是soft-fail模式,取不到OCSP Server的响应就忽略了,协议采取的机制无法生效
7. OCSP Must-Staple
l 面对hard-fail、soft-fail的问题,各家浏览器厂商的态度都不一样。同时,不管浏览器如何选择,都不能满足广大域名用户的需求,那么不如把这个选择交给域名用户自己。
l 为此,OCSP Must-Staple应然而生了,浏览器必须检测OCSP响应。域名证书创建时,自定义设定启用这个选项,将这个信息打入X.509 v3的扩展中,浏览器读取后,强制进行OCSP检测,走hard-fail模式。
l 这个规范被起草在 X.509v3 Extension: OCSP Stapling Required draft-hallambaker-muststaple-00 ,不过,暂未被采纳为RFC标准。
8. 证书吊销机制简介
证书吊销的策略一般有三种:pull-based(CRL,OCSP),push-based 和 network-assisted:
类别 | 特征 | 优点 | 缺点 |
pull-based | 撤销状态请求仅在需要验证证书时发生 | 随用随请求,不占用缓存 | 1.显示客户端流量模式,暴露客户端隐私 2.受网络状况影响 |
push-based | 撤消策略的客户端会定期定期下载撤消信息 | 不会显示客户端流量模式 | 1.依赖缓存状态信息 |
network-assisted | 修改了TLS生态系统以解决撤销问题 | 各有不同 | 各有不同 |
9. 相关论文
l An End-to-End Measurement of Certificate Revocation in the Web‘s PKI(IMC 2015)
l 本文测量了浏览器关于证书吊销的行为——WEB端和移动端
l Trust Revoked — Practical Evaluation of OCSP- and CRL-Checking Implementations(IMC 2018)
l 本文旨在测量WEB组件对于OCSP Must-Staple的支持程度
l 比较了到达或阻止OSCP时测试的浏览器的反应
更加详细信息请联系本人获取。