之前刚碰到这个问题,坑了我们很久,在不同的 iOS 手机型号和版本上的现象还不一致,安卓手机上未发现。
最终检查出来是因为 let's encrypt 的证书 OSCP 服务器域名被 DNS 污染,导致首个请求验证 OSCP 时响应超时。
关于 let's encrypt 的 OSCP 服务器被 DNS 污染 v 站之前有讨论过,详见:
https://www.v2ex.com/t/665734https://www.v2ex.com/t/661753目前解决方案有两种,
1. 更换非 let's encrypt 证书,避免访问被污染的 OSCP 服务器
2. 在 nginx 配置开启 ssl_stapling,并指定未被污染的 DNS 服务器。由服务器进行请求 OSCP 认证缓存后发送给客户端。
配置方法:
在 nginx 的 http 配置内添加
```
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 4.4.4.4 valid=60s;
resolver_timeout 2s;
```
由于我们使用了 let's encrypt 提供的通配符证书,没有其他平台能提供免费的通配符证书。
所以我们当前使用方案 2 来解决