
今日在 Debug 线上接口的时候,发现 SSL 请求用了 3s 多,结合我们用的 Let’s Encrypt
证书,根据经验应该是查询 OCSP 信息时间过长导致的。
查看 OCSP 信息
openssl s_client -connect <域名>:443 -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"
如果返回结果为
OCSP response: no response sent
那么显然是没有获取 OCSP 信息。
查看日志
切到线上环境看下配置文件,确认 Nginx 的 ssl_stapling on;
参数是存在的。检查 Nginx.conf 发现参数确实存在并开启。
查看日志
2020/06/06 05:28:18 [error] 32626#32626: OCSP responder
timed out (110: Connection timed out) while requesting
certificate status, responder: ocsp.int-x3.letsencrypt.org,
可以看到这样的一条报错,很明显 连接 OCSP 服务器超时了。
修改 HOSTS
在生产服务器无论如何 Ping 都无法 Ping 通,运行 nslookup
可以发现是 Cname 到的 a771.dscq.akamai.net
域名,在其他地域服务器上查询该域名发现跟国内返回的结果并不一致,应该是国内域名解析受到了干扰。
随后手动修改 /etc/hosts
添加以下一条。
23.2.16.115 ocsp.int-x3.letsencrypt.org
重启 Nginx 服务器。
nginx -s reload
测试 OCSP 服务
再次执行请求可以发现 已经可以获取 OCSP 的信息了。
OCSP response:
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response
同时再次请求接口可以发现 SSL 速度已经发生了显著提升。
