MihaVuk
(Miha Vuk)
2022 年4 月 11 日 15:45
1
我已经按照教程设置了自托管 Docker 环境并使用 Let’s Encrypt 启用了 HTTPS。
本指南介绍如何在已安装的 Discourse 上使用 Let’s Encrypt 启用 HTTPS。前提是您之前已完成安装,但尚未启用 HTTPS。
所需用户权限:系统管理员
本指南仅适用于尚未启用 HTTPS 的现有安装。按照 官方安装指南 进行操作时,HTTPS 会默认自动启用。
您想免费为您的 Discourse 添加 HTTPS 支持吗?这要感谢我们的朋友 Let’s Encrypt 。
您的网站上其他所有内容是否已准备好支持 HTTPS?
在开始之前,请注意:为了让 HTTPS 正常工作,页面上的 每一个资源 都必须兼容 HTTPS。请检查您的 CDN、社交登录、Logo 文件、任何第三方 JavaScript、图片、字体或 CSS —— 这些 全部 都必须可通过 HTTPS 访问!
注意:运行 ./discourse-setup 将启用 Let’s Encrypt。自 2017 年 3 月起,您可以再次运行该脚本,按几次回车并输入您的电子邮件地址;脚本…
它总是在下面的步骤失败。不使用 HTTPS 的设置工作正常,论坛可以通过 HTTP 公开访问。
root@discoursetest3-app:/shared/letsencrypt# cat acme.sh.log
…
[Mon 11 Apr 2022 02:56:35 PM UTC] discourse-test3.docentric.com :Verify error:Fetching http://discourse-test3.docentric.com/.well-known/acme-challenge/iEFjgyseuVL1IzIrTjmfhwv0HqV7EgUmQUVhy1nmnCE: Timeout after connect (your server may be slow or overloaded)
似乎无法访问 ACME 挑战。
pfaffman
(Jay Pfaffman)
2022 年4 月 11 日 16:04
2
您是否阅读了该指南的第一句话,其中提到如果您执行标准安装,则无需遵循该指南?
这是最近的标准安装吗?您是否运行了 discourse-setup?
看起来您可能阻止了端口 80(或许还有端口 443)的入站连接。
奇怪的是,第一个可以工作,但第二个不行:
○ → curl http://discourse-test3.docentric.com/srv/status
ok
○ → timeout -v 5s curl http://discourse-test3.docentric.com/.well-known/acme-challenge/iEFjgyseuVL1IzIrTjmfhwv0HqV7EgUmQUVhy1nmnCE
timeout: sending signal TERM to command ‘curl’
如果这是一个标准设置,我不确定是什么原因导致了这种情况。
MihaVuk
(Miha Vuk)
2022 年4 月 12 日 08:37
4
这是一个旧的测试安装,没有 HTTPS,现在我想启用 HTTPS。
我尝试手动编辑 app.yml,也尝试运行 discourse-setup。在这两种情况下,错误都是相同的。
我也尝试删除 Discourse(容器和文件)并从头开始安装,但结果是一样的。
我同意这看起来端口 80 不可用,但如果我在 app.yml 中注释掉以下两行,论坛就可以在 HTTP 上正常运行。
“templates/web.ssl.template.yml”
“templates/web.letsencrypt.ssl.template.yml”
磁盘上的静态文件在哪里,例如 http://discourse-test3.docentric.com/.well-known/acme-challenge/iEFjgyseuVL1IzIrTjmfhwv0HqV7EgUmQUVhy1nmnCE?
MihaVuk
(Miha Vuk)
2022 年4 月 13 日 12:18
5
原来只是 ACME 协议在公司防火墙上被阻止了。现在可以了