在我的服务器上,我拥有在 public_html 文件夹上设置的特殊权限。
首先是粘性位
chmod g+s /home/domain.com/public_html
也是默认组权限。
setfacl -m 'default:group::rwX' /home/domain.com/public_html
当我运行我的 certbot 命令时
certbot certonly \
--webroot \
-w /home/domain.com/public_html/ -d domain.com
certbot 将在 public_html 文件夹中创建一个具有正确权限的 .well-known/acme-challenge。它甚至保留正确的组名。但是,acme 挑战本身将具有以下内容。
-rw-r----- 1 root root 87 Feb 7 17:27 ELnik5A0krJsKUsL2If1mVfd2pSzWJAiSSjhA6h-f5E
它由 root 拥有并且具有组 root 并且不能被 apache2 读取。所以整个操作失败了。
添加 --debug-challenges 将允许它暂停,以便我可以手动修复它,但我觉得更新可能是一个问题。
我有什么选择来解决这个问题?
好吧,你只是把事情复杂化了。很喜欢。无需让 webserver 来处理你所有的特殊权限和东西:只需让它成为自己的 webroot 以应对具有简单权限的挑战(它将托管文件,如其生命周期的 0.0001%,而 99.9999% 将保持为空,所以它可以认为是完全安全的):
对于 nginx,它会是
对于废弃软件(不确定,几十年没有使用它)
(但说真的,摆脱 Apache,这是博物馆的东西,大多数人在 10 年代初就摆脱了它)
然后只需使用新的 webroot 调用 certbot:
certbot certonly --webroot -w /var/www/le -d foo.bar