如何开启网站的OCSP Stapling 服务

发布时间:2018/6/18 23:31:42 打印 字号:

什么是OCSP

OCSP(Online Certificate Status Protocol,在线证书状态协议)是用来检验证书合法性的在线查询服务,当我们通过HTTPS访问网站的时候,客户端(浏览器或其他设备)会首先通过证书颁发机构的证书吊销列表(CRL)或者数字证书在线状态协议(OCSP)记录验证网站服务器的证书是否有效。前一种验证方式是最低效的,CA会不断向CRL文件添加证书吊销记录,CRL文件就会变得越来越大,客户端在验证前就需要耗费越来越长的时间来下载CRL文件。由于CRL列表不是实时更新的,所以某些客户端会在 TLS 握手阶段进一步协商时,实时查询 OCSP 接口,并在获得结果前阻塞后续流程。OCSP 查询本质是一次完整的 HTTP 请求 – 响应,这中间 DNS 查询、建立 TCP、服务端处理等环节都可能耗费很长时间,导致最终建立 TLS 连接时间变得更长。

什么是OCSP Stapling

为了降低客户端每次去访问OCSP服务器查询SSL证书的状态所耗费的时间,OCSP Stapling机制就非常先进, 该机制会在客户端和服务器发生TLS握手的过程中发送缓存在网站服务器上的OCSP权威记录到客户端进行证书验证。这样一来,客户端就无需每次都向CA的OCSP进行查询了,同时也降低了由于CA OCSP服务器被DDos造成证书无法验证的事件发生的可能性。

如何开启OCSP Stapling

首先要确认服务器环境是否支持,Nginx版本必须大于或等于1.3.7,其它web服务器请参考官方文档

获取证书ocsp服务地址,找到证书公钥,在windows系统上面打开,当然也可以在浏览器上面查看,详细信息(显示-所有)–授权信息访问,如下图:

ocsp1.png

获取证书的中级根chain.crt和用户公钥public.crt ,按照下面的命令生成ocsp-stapling文件

Openssl ocsp -issuer  chain.crt -cert  public.crt -url http://hc.symcd.com -header “HOST” “hc.symcd.com” -text -respout  morong.ocsp

拷贝morong.ocsp文件到服务器,在Nginx服务器的ssl证书配置语句里面添加如下代码:

ssl_stapling on; 
ssl_stapling_verify on; 
ssl_stapling_file /morong.ocsp;   #路径可以自己指定 
ssl_trusted_certificate  /nginx/conf/sslkey/chain.crt;    #中级根
重启Nginx,ocsp stapling即可生效,可以通过https://www.ssllabs.com/ssltest/ 来进行检查,开启了ocsp stapling,检测结果ocsp stapling项是Yes表示已经成功开启,截图如下:

ocsp2.png