最近大陆用户反应Let's Encrypt证书的网站在苹果系统打开很慢,Safari,IOS SSL引起的超过20秒左右的延时。
经过验证,主要原因为LE证书的吊销状态检查域名(ocsp.int-x3.letsencrypt.org以及相关CName或Alias)在大陆受到劫持引起。苹果系统的浏览器打开SSL网站时将对证书的状态进行验证,当在验证证书状态时,请求了被劫持的Let's Encrypt证书状态检查(OCSP)的服务器,而该服务器为不可使用状态或有很长延时,从而导致打开网站延时。
由于证书状态检查由苹果的浏览器(UIWebView, WKWebView、Safari)发起,而Chrome在访问SSL网站时并不进行这一项检查,所以大部分用户在Chrome中访问正常,只有在苹果系统中访问出现延时。
解决方案为:
在服务器上配置OCSP订书机(SSL Stapling)功能,然后强制让浏览器使用服务器提供的OCSP状态,而不是由浏览器去检查。目前Apache2.4和Nginx1.6以上的系统均支持该项配置。
第一步:修改服务器的hosts文件,解析正确的ocsp.int-x3.letsencrypt.org域名IP
修改服务器的hosts文件,把Let's Encrypt的OCSP服务器进行正确的解析。目前 ocsp.int-x3.letsencrypt.org 正常的服务器IP有:
23.44.51.8 (美国) 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
保存即可!
hosts文件路径:
Windows(以管理员身份运行记事本,然后打开): c:\windows\system32\drivers\etc\hosts
Linux/Unix/Mac Server(必须先切换到超管): /etc/hosts
第二步:在Apache和Nginx中启用OCSP订书机功能
apache,修改全局SSL配置(注意部分服务器要求这两项配置的路径在同一目录):
SSLSessionCache "shmcb:conf/ssl_scache(512000)"
SSLStaplingCache "shmcb:conf/ssl_stapling(512000)"
SSLUseStapling On
nginx,修改SSL配置:
ssl_stapling on;
ssl_stapling_verify on;
第三步:重启apache或nginx即可!