检测OCSP装订是否开启
一键查询脚本
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/check-cert.sh && chmod +x check-cert.sh
运行脚本并提供域名作为参数:
./check-cert.sh example.com
输出,例如
OCSP Stapling: Enabled
OCSP URI: http://e5.o.lencr.org
Enabled 已启用,Not Enabled 未开启
或者可以使用以下命令检测, 将命令中 www.yourdomain.com 改为你的域名
openssl s_client -connect www.yourdomain.com:443 -servername www.yourdomain.com -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"
- 成功输出:
OCSP Response Status: successful (0x0)
- 失败提示:
OCSP response: no response sent
开启 OCSP 装订
开启OCSP装订需要在网站的nginx配置文件中添加如下配置,例如
# 123.com 的 HTTPS 配置
server {
listen 443 ssl;
http2 on;
server_name 123.com;
ssl_certificate /etc/nginx/certs/123.com_cert.pem;
ssl_certificate_key /etc/nginx/certs/123.com_key.pem;
# === OCSP 装订 配置开始 ===
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/123.com/chain.pem;
resolver 8.8.8.8 1.0.0.1 valid=60s ipv6=off;
resolver_timeout 2s;
# === OCSP 装订 配置结束 ===
...
- chain.pem 为完整证书链证书.
- /etc/letsencrypt/live/123.com/chain.pem 修改为你证书实际绝对路径.
添加后,重启nginx服务器,
nginx -t && nginx -s reload
再次使用命令验证,OCSP装订是不是就已经开启了?
./check-cert.sh 123.com
优化
利用 Nginx 的 ssl_stapling_file 指令直接读取本地响应信息,这样就不会去实时查询证书的OCSP服务器,在进行SSL握手的时候直接将本地的响应信息进行下发,极大的加快了访问速度。
编写Shell脚本去获取OCSP响应, 我的这个脚本是针对 使用certbot申请证书编写的, 如果使用的是acme.sh,请根据相应目录修改
获取OCSP响应脚本
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/getOCSP.sh && chmod +x getOCSP.sh
运行脚本,后边的参数为需要获取OCSP响应的域名
./getOCSP.sh 123.com
运行后就会在指定的目录生成OCSP响应文件了
修改Nginx配置读取OCSP响应文件,也就是添加ssl_stapling_file
参数,其他不变
# === OCSP 装订 配置开始 ===
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/123.com/chain.pem;
ssl_stapling_file /etc/letsencrypt/ocsp/123.com/123.com.ocsp.resp;
resolver 8.8.8.8 1.0.0.1 valid=60s ipv6=off;
resolver_timeout 2s;
# === OCSP 装订 配置结束 ===
重启Nginx后,OCSP响应的预加载就完成了
nginx -t && nginx -s reload
配置crontab定时任务,每日自动刷新OCSP缓存 虽然我们本地预加载了OCSP响应缓存,但是OCSP响应也是有生效时间了,超过有效时间就得重新获取,这里我们可以配置crontab定时任务去每日自动刷新OCSP响应缓存
(crontab -l ; echo "22 2 * * * /root/getOCSP.sh 123.com > /dev/null 2>&1") | crontab -
至此我们的Nginx OCSP装订工作就到此完成~