用于启用 force_https 的有效证书测试已损坏,导致其在应开启时处于关闭状态

编辑:将此改为 bug。Force_https 现在在之前启用的站点上被禁用了,这导致了一些问题。


我曾花了一段时间调试一个“上传无法工作”的站点。在排查了一系列显而易见的问题(重建、安全模式、考虑非标准插件)后,我最终注意到了混合内容警告,并启用了 force_https,问题得以解决。

我以为一两年前 force_https 默认是启用的,但最近几次我听说(或亲眼看到)因为 force_https 未启用而导致功能异常。

是否有理由不将其默认开启?
[/quote]

我曾花了一段时间调试一个“上传无法工作”的站点。在排查了一系列显而易见的问题(重建、安全模式、考虑非标准插件)后,我最终注意到了混合内容警告,并启用了 force_https,问题得以解决。

我以为一两年前 force_https 默认是启用的,但最近几次我听说(或亲眼看到)因为 force_https 未启用而导致功能异常。

是否有理由不将其默认开启?

1 个赞

如果存在有效证书,它会在 discourse.conf自动启用
这确实是一两年前开始的。

grep -q 'force_https' "/var/www/discourse/config/discourse.conf" || echo "force_https = 'true'" >> "/var/www/discourse/config/discourse.conf"

1 个赞

啊哈!谢谢,Richard。

所以我没有疯。

问题是有效证书的验证失败了:

# openssl verify -CAfile ca.cer fullchain.cer 
O = Digital Signature Trust Co., CN = DST Root CA X3
error 10 at 3 depth lookup: certificate has expired
error fullchain.cer: verification failed

然后,如果我从 /etc/ca-certificates.conf 中移除 mozilla/DST_Root_CA_X3.crt 并运行 update-ca-certificates,我就会得到以下结果:

C = US, O = Internet Security Research Group, CN = ISRG Root X1
error 2 at 2 depth lookup: unable to get issuer certificate
error fullchain.cer: verification failed

它在浏览器中显示正常。而且我今天刚刚重新构建了该容器(所以它应该包含更新后的根证书)。

我对证书这方面了解不多,不太清楚具体是怎么回事。我可以在容器内部 curl Let’s Encrypt 证书(上周我在使用的一个 WordPress 容器中,这项测试曾失败)。

而且这次不只是我这样,最近确实有 一些人通过启用 force_https 解决了问题

1 个赞

是的,这听起来与 Let’s Encrypt 根证书过期 有关,尤其是/仅当该问题是在上周五之后开始出现的。

openssl version 命令的输出是什么(在 Docker 容器内)?(因为 此问题)。

2 个赞
OpenSSL 1.1.1d  2019年9月10日

所以也许需要“将 ISRG Root X1 添加到信任存储”?但我在 ca-certificates.conf 中看到了 mozilla/ISRG_Root_X1.crt

1 个赞

天哪。我花了两天时间调试一个问题,原本以为是 Rails、Ansible 和 Python 之间某个复杂的集成问题,结果却发现是我那台服务器之前启用了 force_https,现在却关闭了,导致大量请求发往 http://myserver 而不是 https://myserver

这看起来确实像是一个 bug。

2 个赞

是的,这确实是一个漏洞。

上周我们将论坛迁移到另一台服务器时,触发了 Let’s Encrypt 的重新签发限制(同一主机名每周最多 5 次)。起初我们不知道原因,但这个漏洞导致每次构建时都会重新签发证书,五次之后便达到了速率限制。由于之前的证书仍保留在服务器上,因此并未引起任何警报。

直到我们将论坛迁移到新服务器时,才发现问题:我们未能获得新证书。虽然可以从旧服务器复制证书,但我们从未意识到根本原因。

acme.sh锁定在 2.9.0 版本,而主分支已更新至 3.0.1,并引入了 设置默认链的功能,我怀疑这可能与该问题有关。

3 个赞

@Falco,你想看看这个吗?你似乎对这些事情很精通。过去一两周里,我花了好几个小时研究这个,但仍然不明白是怎么回事。

1 个赞

是的,我已在周末将其分配给自己。这里正值延长的假期周末,但我将尽快在本周内查看。

2 个赞

啊,原来是我漏掉了那部分。抱歉打扰您了。

我们的延长假期刚结束,而阿帕雷西达圣母节也不在我的日历上。不过现在我知道了。

谢谢。

2 个赞

此问题已通过以下链接修复:

5 个赞

感谢 @Falco 在此方面的辛勤付出 :slight_smile:

2 个赞