Certbot не создает папку acme-challenge

У меня была работа. Позвольте зашифровать сертификаты несколько месяцев назад (со старым клиентом letencrypt). Сервер, который я использую, - nginx.

Certbot создает общеизвестную папку, но не папку acme-challenge

Теперь я попытался создать новые сертификаты через ~/certbot-auto certonly --webroot -w/var/www/webroot -d domain.com -d www.domain.com -d git.domain.com

Но я всегда получаю такие ошибки:

IMPORTANT NOTES:
   - The following errors were reported by the server:

   Domain: git.domain.com
   Type:   unauthorized
   Detail: Invalid response from
   http://git.domain.com/.well-known/acme-challenge/ZLsZwCsBU5LQn6mnzDBaD6MHHlhV3FP7ozenxaw4fow:
   "<.!DOCTYPE html>
   <.html lang='en'>
   <.head prefix='og: http://ogp.me/ns#'>
   <.meta charset='utf-8'>
   <.meta content='IE=edge' http-equiv"

   Domain: www.domain.com
   Type:   unauthorized
   Detail: Invalid response from
   http://www.domain.com/.well-known/acme-challenge/7vHwDXstyiY0wgECcR5zuS2jE57m8I3utszEkwj_mWw:
   "<.html>
   <.head><.title>404 Not Found</title></head>
   <.body bgcolor="white">
   <.center><.h1>404 Not Found</h1></center>

(Конечно, точки внутри HTML-тегов на самом деле отсутствуют)

Я искал решение, но еще не нашел его. Кто-нибудь знает, почему certbot не создает папки?

Заранее спасибо!

Ответ 1

Проблема заключалась в конфигурации nginx. Я заменил свои длинные файлы конфигурации самой простой конфигурацией:

server {
    listen 80;
    server_name domain.com www.domain.com git.domain.com;
    root /var/www/domain/;
}

Затем я смог выпустить новые сертификаты.

Проблема с моими длинными файлами конфигурации была (насколько я могу судить), что у меня были следующие строки:

location ~ /.well-known {
    allow all;
}

Но они должны быть:

location ~ /.well-known/acme-challenge/ {
    allow all;
}

Сейчас возобновляется работа.

Ответ 2

У меня была аналогичная проблема. Моя проблема заключалась в том, что у меня было это правило:

 location ~ /\. {
    access_log off;
    log_not_found off;
    deny all;
 }

эти строки, где отмена каждого доступа к любому каталогу, начинающемуся с "." (Точка)

Ответ 3

У меня была глупая проблема - во время выполнения команды certbot у меня был атрибут webroot, указывающий на мой корневой каталог репозитория, а не на публичный.