当我们通过HTTPS访问网站的时候,客户端(浏览器或其他设备)会首先通过证书颁发机构的证书吊销列表(CRL)或者数字证书在线状态协议(OCSP)记录验证网站服务器的证书是否有效。前一种验证方式是最低效的,CA会不断向CRL文件添加证书吊销记录,CRL文件就会变得越来越大,客户端在验证前就需要耗费越来越长的时间来下载CRL文件。
相比CRL验证方式,OCSP就更加高效,OCSP每次只查询并获取一条记录。但同时也存在副作用,因为OCSP服务器通常是由CA提供的一台中心化第三方的OCSP验证服务器,在一定程度上也会存在查询延迟和黑客攻击的危险。一旦有黑客或者组织对CA的OCSP发动DDos攻击,客户端便无法从OCSP服务器获取查询结果并完成证书验证, 客户端就可能会提示网站不受信任。
今天我们讨论的Nginx OCSP Stapling机制就非常先进, 该机制会在客户端和服务器发生TLS握手的过程中发送缓存在网站服务器上的OCSP权威记录到客户端进行证书验证。这样一来,客户端就无需每次都向CA的OCSP进行查询了,同时也降低了由于CA OCSP服务器被DDos造成证书无法验证的事件发生的可能性。
值得注意的是: Nginx会在客户端的HELLO握手信息中返回OCSP记录,并且只有当客户端对Nginx发出OCSP信息请求的情况下,Nginx才会发送缓存的OCSP 权威记录到客户端。
大多数的服务器都会缓存48小时内的OCSP权威记录,同时在到期前,服务器也会向CA的OCSP服务器更新最新的OCSP权威记录进行缓存。
开了https网站会变慢,http2也不好使啊几乎体验不到作用,这个OCSP Stapling能不能考虑加进来,能加快ssl的速度?
|
|