Ubuntu

certbot 創建了一個由 root:root 和權限 640 擁有的挑戰,而 apache 無法訪問它 - 自定義 ACL 應用於父目錄

  • March 19, 2022

在我的伺服器上,我擁有在 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,它會是

   location ~* /.well-known/acme-challenge {
       allow all;
       rewrite ^/(.*)$ /$1;
       root /var/www/le;
       break;
   }

對於廢棄軟體(不確定,幾十年沒有使用它)

   Alias "/.well-known/acme-challenge" "/var/www/le"

(但說真的,擺脫 Apache,這是博物館的東西,大多數人在 10 年代初就擺脫了它)

然後只需使用新的 webroot 呼叫 certbot:

certbot certonly --webroot -w /var/www/le -d foo.bar

引用自:https://serverfault.com/questions/1092972