Https(LetsEncrypt) 在iPhone上慢的问题

原因

域名ocsp.int-x3.letsencrypt.org在国内有DNS污染, 导致浏览器过长时间卡在OCSP检查上, 而不同浏览器对待OSCP机制的处理是不一样的, 比如在IE下最多连接2S, 超时则不处理, 在Chrome中可能都不会处理它, 这便导致了在不同浏览器下打开速度有差异.

关于OSCP是什么, 可以查看这篇文章你不在意的HTTPS证书吊销机制.

解决方案

开启 nginx 的 ssl_stapling

server {
  resolver 8.8.8.8;
  ssl_stapling on;
  ssl_stapling_verify on;
  ...
}

每一句都是必要的, 由于域名ocsp.int-x3.letsencrypt.org在国内有DNS污染, 所以修改 resolver 8.8.8.8就好.

如果不添加resolver 8.8.8.8则在nginx日志下会出现下面的错误
[error] 4966#4966: OCSP responder timed out (110: Operation timed out) while requesting certificate status, responder: ocsp.int-x3.letsencrypt.org, peer: 64.13.232.149:80, certificate: "/etc/nginx/key/yourdomain.com/fullchain.pem"

验证OCSP Response是否开启成功
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"

如果开启成功会得到响应

OCSP response: 
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response

失败会得到

OCSP response: no response sent

请多执行几次, nginx并不是马上就去获取OCSP Response, 而是当网站被访问之后异步获取, 所以可能前几次请求不会有OCSP Response.

相关内容