d.jpeg

OCSP Stapling原理

OCSP(Online Certificate Status Protocol,在线证书状态协议),是一个在线证书查询接口,它建立一个可实时响应的机制,让浏览器发送查询证书请求到CA服务器,然后CA服务器实时响应验证证书是否合法有效,这样可以实时查询每一张证书的有效性,解决了 CRL 的实时性问题。
但是 OCSP 又有另外两个问题:CA服务器上的隐私和性能问题。
由于OCSP要求浏览器直接请求第三方CA以确认证书的有效性,因此会损害隐私。CA知道什么网站访问了该CA以及哪些用户访问了该网站。而这些数据对于跨国业务网站或者政企网站尤为敏感。
另一方面,某些客户端会在 SSL 握手时去实时查询 OCSP 接口,并在获得查询结果前会阻塞后续流程,在网络不佳时(尤其是内陆地区)会造成较长时间的页面空白,降低了HTTPS性能,严重影响用户体验。在服务器上部署OCSP Stapling将可以解决以上问题。

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

检查证书是否已开启 OCSP Stapling

[root@test ~]# openssl s_client -connect sre.ink:443 -servername sre.ink -status -tlsextdebug < /dev/null 2>&1 | grep "OCSP"
OCSP response: no response sent

no response sent表明未开启

nginx配置开启

教程
https://www.digicert.com/kb/ssl-support/nginx-enable-ocsp-stapling-on-server.htm
nginx配置:

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=60s ipv6=off;
resolver_timeout 5s;

验证

[root@test ~]# openssl s_client -connect sre.ink:443 -servername sre.ink -status -tlsextdebug < /dev/null 2>&1 | grep "OCSP"
OCSP response: 
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response

successful表明开启

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code