SS Sub
免费、付费机场节点和订阅

网站开启OCSP Stapling

OCSP是在线证书状态协议(Online Certificate Status Protocol)的缩写 ,是一个用于获取 X.509 数字证书撤销状态的网际协议,用于检验证书合法性。OCSP 查询需要建立一次完整的 HTTP 查询请求,期间的 DNS 查询、建立 TCP 连接、服务端响应和数据传输都是额外开销,使得建立 TLS 连接花费更多时长。后来出现了OCSP Stapling ,将原本需要客户端发起的 OCSP 请求转嫁给服务端,并随证书一起发送给客户端,因此能提高 TLS 握手效率。

今天在 SSL Labs 网站上检查网站的SSL配置,意外发现OCSP Stapling没有开启:

网站的OCSP Stapling未开启网站的OCSP Stapling未开启
网站的OCSP Stapling未开启

印象中Nginx配置中记得有加 ssl_stapling onssl_stapling_verify on 两个配置,怎么突然就不起作用了呢?

带着疑问进行谷歌搜索,在Jerry Qu的网站上找到了原因:之前本站一直用的Let’s encrypt签发的免费证书,其OCSP Response不包含Certificate信息,因此ssl_stapling_verifyssl_trusted_certificate两个配置无需设置,ssl_stapling on 开启即可;后来本站证书更新为阿里云申请的免费证书,由DigiCert Inc签发,需要配置ssl_trusted_certificate才能成功开启OCSP Stapling。

于是更改Nginx站点的配置为:

server {
    ....  一些常规配置
    # OCSP stapling配置
    ssl_stapling on;
    ssl_stapling_verify on;
    # ssl证书配置
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    ssl_trusted_certificate  /path/to/cert.pem;

    # 证书校验域名dns服务器
    resolver 8.8.8.8 8.8.4.4 216.146.35.35 216.146.36.36 valid=600s;
}

修改后使用systemctl restart nginx重启Nginx,在 SSL Labs  网站或者用openssl客户端都能验证OCSP Stapling已经成功开启:

openssl验证OCSP Stapling已经开启openssl验证OCSP Stapling已经开启
openssl验证OCSP Stapling已经开启

openssl验证OCSP Stapling开启的命令是: openssl s_client -connect 域名:端口 -servername 域名 -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response",已开启的输出如上,未开启则输出“OCSP response: no response sent”

经过上述配置,本站以及 v2ray客户端trojan客户端ssr客户端 和 shadowsock客户端 的下载服务器均已经开启OCSP配置,用户访问这些网页时速度上应该有非常轻微的提升?

参考

1. 从无法开启 OCSP Stapling 说起

未经允许不得转载:机场推荐官 » 网站开启OCSP Stapling