Certbot не удалось аутентифицировать некоторые домены (аутентификатор: nginx)

Я использую nginx в качестве обратного прокси-сервера, и по какой-то причине я не могу продлить сертификат letencrypt. Я попытался обновить nginx и certbot до последней версии. Раньше это работало, и я не уверен, была ли изменена какая-то конфигурация сервера.

При запуске обновления certbot я получаю следующую ошибку от certbot:

      certbot renew --nginx --dry-run

Certbot не удалось аутентифицировать некоторые домены (аутентификатор:nginx). Центр сертификации сообщил о следующих проблемах: Домен: myurl Тип: неавторизованный Подробности: : Неверный ответ от http://myurl/.well-known/acme-challenge/asdasd: 404

Подсказка: Центру сертификации не удалось проверить временные изменения конфигурации nginx, внесенные Certbot. Убедитесь, что перечисленные домены указывают на этот сервер nginx и что он доступен из Интернета.

Пример журнала ошибок Nginx:

      2023/08/03 08:22:36 [error] 13286#13286: *32 open() "/usr/share/nginx/html/.well-known/acme-challenge/asdasd" failed (2: No such file or directory), client: ipadress, server: ipadress, request: "GET /.well-known/acme-challenge/asdasd HTTP/1.1", host: "url"

Насколько я понимаю, nginx не может обслужить acme-challange, или certbot записывает вызов в другое место, кроме /usr/share/nginx/html....

Может ли кто-нибудь указать мне в правильном направлении?

заранее спасибо

Обновить Вывод команд @symcbean дает сообщение «Нет такого файла или каталога». ls -l /usr/share/nginx/html/.well-known/acme-challenge/ls: невозможно получить доступ к '/usr/share/nginx/html/.well-known/acme-challenge/': такого файла или каталога нет.

Как я узнаю, что cerbot пытается записать запись в /usr/share/..., а не в другую папку?

Пример конфигурации сайта nginx.

      upstream beta-api {
    server 10.166.0.4:8384;
}

server {
    server_name betaapi.ancytree.com;
    listen 80;
    # set client body size to 8M #
    client_max_body_size 8M;
        
    location / {
        proxy_pass http://beta-api;
        include proxy_params;
    }

}

1 ответ

Вы просмотрели свои логи – это хорошее начало! Поскольку кажется, что LetsEncrypt получает доступ к вашему сайту, вы можете исключить множество проблем, связанных с DNS и HTTP.

Следующее, что вам следует попробовать, — это самостоятельно выполнить задание HTTP-01 и посмотреть, что произойдет.

Обновления Certbot будут выполняться как задание cron, поэтому его необходимо запускать с использованием той же учетной записи:

      echo "test" >/usr/share/nginx/html/.well-known/acme-challenge/asdasd
ls -l /usr/share/nginx/html/.well-known/acme-challenge/asdasd
cat /usr/share/nginx/html/.well-known/acme-challenge/asdasd
curl -I http://myurl/.well-known/acme-challenge/asdasd

Если это не дает вам ответа, обновите свой пост выводом этих команд.

(вероятными кандидатами являются права доступа к файлам, включая MAC, отсутствующие каталоги или отсутствующее сопоставление на вашем веб-сервере между файловой системой и URL-путем)

Другие вопросы по тегам