Let's Encrypt证书4G网下访问过慢解决方案

起因

因为LE证书的吊销状态检查域名(ocsp.int-x3.letsencrypt.org以及相关CName或Alias)在大陆受到劫持,苹果系统的浏览器打开SSL网站时将对证书的状态进行验证,当在验证证书状态时,请求了被劫持的Let’s Encrypt证书状态检查(OCSP)的服务器,而该服务器为不可使用状态或有很长延时,从而导致打开网站延时。而其他平台及浏览器如Chrome在访问SSL网站时并不进行这一项检查,所以大部分用户在Chrome中访问正常,只有在苹果系统中访问出现延时。

表现

IOS系统微信小程序接口、app接口、webview组件等在WIFI下访问响应正常,但在4G网下响应变慢

解决方案

在服务器上配置OCSP订书机(SSL Stapling)功能,然后强制让浏览器使用服务器提供的OCSP状态,而不是由浏览器去检查。目前Apache2.4和Nginx1.6以上的系统均支持该项配置。

  1. 修改服务器的hosts文件,解析正确的ocsp.int-x3.letsencrypt.org域名IP
    修改服务器的hosts文件,把Let’s Encrypt的OCSP服务器进行正确的解析。目前 ocsp.int-x3.letsencrypt.org 正常的服务器IP有:
    23.44.51.8 (美国,测试可用,20201120)
    23.44.51.27 (美国)
    104.109.129.57 (英国)
    104.109.129.11 (英国)
    175.45.42.209 (香港)
    175.45.42.218 (香港)

可以在hosts文件中加入:
23.44.51.8 ocsp.int-x3.letsencrypt.org
保存即可

  1. 在Apache或Nginx中启用OCSP订书机功能
    Apache
1
2
3
SSLSessionCache        "shmcb:conf/ssl_scache(512000)"
SSLStaplingCache "shmcb:conf/ssl_stapling(512000)"
SSLUseStapling On

Nginx

1
2
3
#resolver 8.8.8.8; # 指定DNS,目的是正确解析ocsp.int-x3.letsencrypt.org
ssl_stapling on;
ssl_stapling_verify on;

本人测试后指定DNS无效,改为关闭指定DNS,直接在/etc/hosts中指定ocsp.int-x3.letsencrypt.org的ip,亲测可用;

验证

验证OCSP Response是否开启成功

1
openssl s_client -connect <域名>:443 -servername <域名> -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"

如果开启成功会得到响应

1
2
3
4
OCSP response: 
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response

失败会得到

1
OCSP response: no response sent

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

相关内容

Https(LetsEncrypt) 在iPhone上慢的问题
使用Let’s Encrypt证书的网站在苹果系统打开很慢,Safari,IOS SSL引起的延时
记录一次开启 OCSP stapling 解决app内webview加载慢的问题 letsencrypt


Let's Encrypt证书4G网下访问过慢解决方案
https://www.goozoe.com/posts/18851.html
作者
一起吃西瓜
发布于
2020年11月20日
许可协议