我刚刚更新了此版本,因为旧版本不再起作用。我在两个网站上对其进行了测试,因此我认为它应该没问题。
编辑:已找到修复方法,忽略下方所有内容,但为方便以后的人保留。修复方法放在最底部。
刚偶然看到这个帖子。所以,我的网站是:forums.mysite.me。我的 NGINX 配置中有 3 个域名,并且我的域名提供商正在使用 DNS CNAME 来提供这些域名,但它们显示不安全:
mysite.me
www.mysite.me
forum.mysite.me (如果没有“s”,如果有人拼错或猜测 URL)
我应该在原始帖子中的配置中使用我的基础域名吗?或者如何为所有 3 个域名进行设置?
after_ssl:
# 告诉 letsencrypt 获取哪些附加证书
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d forums.mysite.me --keylength"
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--fullchainpath/
to: "-d forums.mysite.me --fullchainpath"
我很困惑,因为第一个“replace”部分有一个 from: /--keylength/,而它下面的部分有一个 from: /--fullchainpath/。那么,我是否需要为我列出的这 3 个 URL 中的每一个都创建 2 个条目?或者……会是这样吗?
after_ssl:
# 告诉 letsencrypt 获取哪些附加证书
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d mysite.me -d www.mysite.me -d forum.mysite.me --keylength"
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--fullchainpath/
to: "-d mysite.me -d www.mysite.me -d forum.mysite.me --fullchainpath"
^ 是的,上面的框就是处理多个站点/LetsEncrypt 的修复方法。太激动了。
是的。文件中存在两个不同的替换项,需要使用主机名进行更新。
这不就是帖子顶部给你的,在你按照描述输入名称后吗?
我们如何编辑 OP 以使其不那么令人困惑?
就我个人而言,我会说把它移到输入框上方,这样你在输入时就能看到它。
帖子确实是这么说的,但我没看懂,因为
您引用的“如果您需要添加多个域”部分为什么不能回答这个问题?
好的。这个怎么样:
然后在要复制的代码之后,继续:
这有意义吗?
我认为最简单的方法是将实际代码与多个站点放在我上面使用的示例中:
after_ssl:
# tell letsencrypt what additional certs to get
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d mysite.me -d www.mysite.me --keylength"
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--fullchainpath/
to: "-d mysite.me -d www.mysite.me --fullchainpath"
我认为大多数人只想添加一个额外的域名,所以我的方法更简单,提供了一种无需编辑即可获取所需确切文本的简单方法。
也许仍然清楚的是,如果您的网站是 discourse.y.com,并且您想要 discourse.y.com 和 y.com 的证书,您只需要在“domain2”字段中输入 y.com 并单击复制图标?
在您的示例中,如果您的 Discourse 配置为 mysite.com,则无需在示例中使用 -d mysite.me 部分(或者如果您的网站是 www.mysite.me,您只需要 -d mysite.me 部分)。
此代码添加到哪个文件中?
代码应添加到 app.yml 文件的 hooks 部分的末尾附近:
18 个帖子被拆分为新主题:“Let’s Encrypt 与多域名对 ECC 证书不起作用” (Let’s Encrypte with multiple domains wasn’t working for ECC certs)
我是否仍需要另外两个代码段替换,还是只需要这个新的代码段?
我添加了它并重新编译,但在访问我想要重定向的一个 https 域时仍然收到 SSL 隐私错误。
查看证书时,其通用名称是 forum.domain.com,证书中不包含 O 和 OU。
我正尝试将 https://domain.com 和 https://www.domain.com 重定向到 https://forum.domain.com。
当使用 http://domain.com 和 http://www.domain.com 时,它们会正确重定向到 https://forum.domain.com。
您插入了什么?您的 after_ssl 节块是什么样的?
看起来是这样(已更改实际域名)
after_ssl:
- replace:
filename: /etc/runit/1.d/letsencrypt
from: /-d forum.mydomain.com /
to: -d forum.mydomain.com -d www.mydomain.com -d mydomain.com
global: true
我还添加了这个
LETSENCRYPT_ALTERNATE_NAMES: mydomain.com,www.mydomain.com
浏览器错误是
net::ERR_CERT_COMMON_NAME_INVALID
所有的名称都能解析吗?它们前面没有 Cloudflare 吗?你达到了速率限制了吗?你可以在容器中,运行 /etc/runit/1.d/letsencrypt,看看会发生什么
所有名称都已解析,没有 Cloudflare,命中率应该没问题。
这是运行 letsencrypt 的结果;
(域名已替换)
/var/www/discourse# /etc/runit/1.d/letsencrypt
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[Tue Apr 29 04:02:13 PM UTC 2025] Unknown parameter : 4096
[Tue Apr 29 04:02:13 PM UTC 2025] Installing key to: /shared/ssl/forum.domain.com.key
[Tue Apr 29 04:02:13 PM UTC 2025] Installing full chain to: /shared/ssl/forum.domain.com.cer
[Tue Apr 29 04:02:13 PM UTC 2025] Run reload cmd: sv reload nginx
ok: run: nginx: (pid 429) 10662s
[Tue Apr 29 04:02:13 PM UTC 2025] Reload success
[Tue Apr 29 04:02:13 PM UTC 2025] Unknown parameter : ec-256
[Tue Apr 29 04:02:14 PM UTC 2025] Installing key to: /shared/ssl/forum.domain.com_ecc.key
[Tue Apr 29 04:02:14 PM UTC 2025] Installing full chain to: /shared/ssl/forum.domain.com_ecc.cer
[Tue Apr 29 04:02:14 PM UTC 2025] Run reload cmd: sv reload nginx
ok: run: nginx: (pid 429) 10663s
[Tue Apr 29 04:02:14 PM UTC 2025] Reload success
我查看了文件,这里有一个有趣的:
issue_cert() {
LE_WORKING_DIR="${LETSENCRYPT_DIR}" /shared/letsencrypt/acme.sh --issue $2 -d forum.domain.com -d www.domain.com -d domain.com--keylength $1 -w /var/www/discourse/public
}
看起来最后一个域名和 --keylength 之间缺少一个空格?
domain.com--keylength
修复该问题解决了此问题,感谢您的帮助
我假设修复也应该在 to: 字段中添加 /?
after_ssl:
- replace:
filename: /etc/runit/1.d/letsencrypt
from: /-d forum.domain.com /
to: "-d forum.domain.com -d www.domain.com "
global: true
应该是引号,而不是斜杠。我编辑了你的帖子和 OP。你现在拥有的应该可以工作。