gpetrov
(George Petrov)
1
确实,IPv6 问题和 Let’s Encrypt 的故障描述得比较模糊。
在重建 Discourse 时,一切正常,新证书成功签发。
但自动续期 Let’s Encrypt 证书时失败了,因为站点在运行时无法通过 IPv6 访问,导致 Let’s Encrypt 无法验证 .well-known 目录,从而超时。
我们还检查了 Docker 主机配置,发现 IPv6 的 iptables(ip6tables)没有像 IPv4 那样设置转发规则到 Docker 内部网络,尽管 ip6tables 中所有规则都已允许…
我们还在 Docker 主机设置中启用了 IPv6 并重启了守护进程,但问题依旧。
@jomaxro
jomaxro
(Joshua Rosenfeld)
2
谢谢,George。第一个问题,你能确认你遵循了 discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 吗?
我刚刚检查了我们其中一个启用了 IPv6 的 Digital Ocean“自托管”测试站点,可以确认 SSL 证书已成功续期,未出现问题。
gpetrov
(George Petrov)
3
是的,我们正是这样操作的:先手动安装 Docker,然后再运行 discourse-setup。
那是很久以前的事了(2.5 年前),起初一切正常。但一年后,当我们为 IPv6 添加了 AAAA 记录后,自动续期就停止工作了,每次都必须运行 discourse rebuild 才能获取新的 SSL 证书。
jomaxro
(Joshua Rosenfeld)
4
您是否有自动续期失败时的日志?它们会非常有帮助。
另外,您是否对官方指南进行了任何修改?例如使用了额外的反向代理?手动修改了 app.yml?主机系统的防火墙配置?等等。
我并非质疑您,但鉴于我们知道有数千个自托管部署实例在运行,其中许多使用了 IPv6,如果 SSL 证书续期在 IPv6 站点上失败,我们应该会听到大量反馈。
gpetrov
(George Petrov)
5
我的更新中出现了错误
api_key = "a quick brown fox"
fetch("https://api.example.com/data", headers: { 'Authorization' => api_key })
请帮我修复它。
Falco
(Falco)
9
这通常意味着 AAAA DNS 记录配置有误。正如
我推测确实如此。
既然我们在 DigitalOcean 上托管多个网站时,IPv6 配合 Let’s Encrypt 运行正常,这看起来是用户操作问题。如果您能提供可复现的步骤,请开启一个新话题。