随着人们对网络安全意识的增强,越来越多的网站已实现了HTTPS加密,在安全性方面有了质的飞跃,提升了访问者对网站的信赖,但是当客户端访问OCSP服务器延时较高时,打开链接的速度相对较慢又会让访客流失。怎么办?OCSP Stapling将在很大程度上解决网站设置HTTPS后访问速度变慢的问题。

背景

首先,我们先了解一下互联网PKI证书的生命周期。

 对于一个可信任的 CA 机构颁发的有效证书,在证书到期之前,只要 CA 没有将该证书吊销,那么这个证书就是有效可信任的。但是,由于某些特殊原因(比如私钥泄漏,证书信息有误,CA 有漏洞被黑客利用,颁发了其他域名的证书等等),需要吊销某些证书。那浏览器或者客户端如何知道当前使用的证书已经被吊销了呢?通常有两种方式:CRL OCSP

CRL

CRLCertificate Revocation List,证书吊销列表) 是由 CA 机构维护的一个列表,列表中包含已经被吊销的证书序列号和吊销时间。浏览器可以定期去下载这个列表用于校验证书是否已被吊销。可以看出,CRL 只会越来越大,而且当一个证书刚被吊销后,浏览器在更新 CRL 之前还是会信任这个证书的,实时性较差。这时,OCSP弥补了这一点缺陷。

OCSP

OCSPOnline Certificate Status Protocol,在线证书状态协议),是一个在线证书查询接口,它建立一个可实时响应的机制,让浏览器发送查询证书请求到CA服务器,然后CA服务器实时响应验证证书是否合法有效,这样可以实时查询每一张证书的有效性,解决了 CRL 的实时性问题。

但是 OCSP 又有另外两个问题:CA服务器上的隐私和性能问题。

由于OCSP要求浏览器直接请求第三方CA以确认证书的有效性,因此会损害隐私。CA知道什么网站访问了该CA以及哪些用户访问了该网站。而这些数据对于跨国业务网站或者政企网站尤为敏感。

另一方面,某些客户端会在 SSL 握手时去实时查询 OCSP 接口,并在获得查询结果前会阻塞后续流程,在网络不佳时(尤其是内陆地区)会造成较长时间的页面空白,降低了HTTPS性能,严重影响用户体验。在服务器上部署OCSP 本地化SSL证书将可以解决以上问题。

OCSP Stapling

OCSP Stapling 就是为了解决 OCSP 隐私问题和性能问题而生的。其原理是:网站服务器将自行查询OCSP服务器并缓存响应结果,然后在与浏览器进行TLS连接时返回给浏览器,这样浏览器就不需要再去查询了。因此,浏览器客户端也不再需要向任何第三方披露用户的浏览习惯,完美解决了隐私问题。同时,当有客户端向服务器发起 SSL 握手请求时,服务器将证书的 OCSP 信息随证书链一同发送给客户端,从而避免了客户端验证会产生的阻塞问题,提升了HTTPS性能。由于 OCSP 响应是无法伪造的,因此这一过程也不会产生额外的安全问题。

所以,在服务器上部署OCSP Stapling能极大的提高安全稳定性能、使网站访问速度更快,用户体验更好。