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-путем)