HTTPS已经广泛普及,相关技术也非常成熟。要理解OCSP绑定是什么,首先必须理解OCSP是什么。OCSP (Online Certificate Status Protocol),又称在线证书状态协议,是一种用于验证证书有效性的在线查询协议。
网站的每个访问者都将执行OCSP查询。通过OCSP绑定可以代替OCSP (Online Certificate Status Protocol)来查询证书的状态。然后你可以优化HTTPS的速度,因为大多数CA的OSCP服务器都不在中国大陆
为了理解这一切,让我们从CRL开始
当用户通过HTTPS访问您的站点时,服务器需要用站点的TLS证书响应用户。用户的浏览器将检查证书的过期时间,并拒绝任何过期/无效的证书。
在某些情况下,由于私钥泄漏,服务器所有者必须将证书标记为无效,依靠证书颁发机构实现至少一种方法来撤销有问题的证书,并通知浏览器拒绝这些已撤销的证书。
CRL (Certificate Revocation List),也称为证书吊销列表,是PKI系统中的结构化数据文件,包含证书颁发机构吊销的证书的序列号和吊销日期。在用户访问您的站点之前,浏览器会先下载并解析CRL文件,然后通过CRL文件验证您的证书是否已被吊销。
随着HTTPS的普及,发布的CRL文件越来越大,这无疑增加了每个链接的网络开销。CRL无法很好地扩展的问题正变得越来越明显。
OCSP用于验证网站服务器的证书是否有效
OCSP (Online Certificate Status Protocol),又称在线证书状态协议,是一种用于验证证书有效性的在线查询协议。当用户通过HTTPS访问您的网站时,客户端浏览器将通过OCSP响应器验证网站服务器证书的有效性。(浏览器现在可以联系响应器来请求ca颁发的单个证书的撤销状态,而不必检索和处理整个CRL。)
OCSP似乎是一种有效的解决方案,但新协议已被证明存在实际问题。
性能问题,浏览器需要为每个新的HTTPS连接执行额外的HTTP请求,这增加了网络开销;
安全问题,大多数实际的OCSP实现都不够可靠(由于网络延迟、配置或应用程序错误),导致用户浏览器中的OCSP检查失败。如果无法访问OCSP服务器或服务器超时,浏览器将认为证书有效并继续HTTPS连接;
由于证书与密钥和域相关联,并且浏览器在每个新的HTTPS连接之前请求吊销状态,因此隐私问题意味着浏览器将其用户网络历史的很大一部分泄露给OCSP响应器。
OCSP绑定是对TLS证书状态查询的一种扩展
OCSP代理是一种弥补OCSP协议缺陷的方法,它允许服务器模拟浏览器提前对证书链进行验证,并将带有CA机构签名的OCSP验证结果响应保存在本地,最多可缓存7天。等到实际握手阶段再向浏览器发出OCSP响应和证书链,以避免增加浏览器的握手延迟。由于浏览器不需要直接从CA站点查询证书状态,因此该特性显著提高了访问速度。
由于绑定是在服务器端实现的,浏览器无法知道服务器端是否真正支持绑定,而且OCSP绑定本身也无法完全解决OCSP的软件故障安全问题。
因此,使用被盗证书私钥的攻击者可以通过提供没有OCSP绑定的证书来执行降级攻击。受害者的浏览器无法验证服务器是否真正支持绑定,无法继续正常查询OCSP响应程序。然后,攻击者可以简单地阻止此OCSP查询,并有效地强制浏览器接受该证书为有效证书。
OCSP Must Staple,也称为OCSP Must Staple,是CA和浏览器厂商为了防止OCSP绑定攻击而推出的SSL证书扩展。此扩展要求证书是OCSP绑定。如果浏览器遇到带有此扩展名而未使用OCSP绑定的证书,则会拒绝该证书。
必须绑定OCSP,以减轻上述降级攻击,减少流向CA的OCSP响应程序的不必要流量,也有助于提高OCSP的整体性能。