警告!你的 https 证书可能不被客户端信任

2020年4月4日的新闻:

https://www.landiannews.com/archives/72082.html
Let’s Encrypty免费证书用户请注意:你的证书可能已经无法签发/更新

这篇新闻提到,由于 ocsp.int-x3.letsencrypt.org 在国内被 DNS 劫持污染,导致无法签发新证书。

事实证明不止如此,对于已签发证书,客户端也会访问 OCSP 服务器来确定证书吊销状态,如果客户端无法访问 OCSP,部分浏览器或许没事(如 Chrome),但使用 Windows Schannel 的程序将无法握手,比如 Windows 自带的各种工具、curl、aria2 等。

对于这种不可抗力导致的问题,我无话可说,但也不能坐着等死,我们无法解决客户端的 DNS 劫持问题,但能开启服务端的 OCSP Stapling,让服务端获取 OCSP 信息并发给客户端,这样客户端就不用访问 OCSP 服务器了。

对于 nginx,步骤如下:

1. 通过某种手段找到 ocsp.int-x3.letsencrypt.org 域名的正确 IP(怎么找我不说),把它写入到 /etc/hosts 文件中,或者指定一个防污染 DNS 服务器。

2. 在 nginx 配置文件中加入以下内容:

ssl_stapling               on;
ssl_stapling_verify        on;

或许还需要设置 ssl_trusted_certificate,但我测试发现不写也能用。

3. 重载 nginx 配置。

$ nginx -t
$ nginx -s reload

由于 nginx 是被动检测,前几次连接可能并不会含有 OCSP 信息,等几秒就好了。

省略一万字脏话,送给那些死妈的相关人员。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

扫码去手机上看