При обновлении сертификатов Let’s Encrypt могут возникать ошибки, из-за которых автоматическое продление не срабатывает. В этой статье разберём одну из распространённых проблем — отсутствие параметра webroot в конфигурации Certbot. Пошагово рассмотрим, как проверить настройки, исправить ошибку и успешно обновить сертификат на вашем сервере с Nginx.
Недавно обнаружил, что сертификат Let’s Encrypt на один из сайтов не обновился, хотя уже по времени должен был как с неделю быть новым. Для того, чтобы узнать в чем дело, подключаемся к нашему серверу по SSH и вводим команду:
sudo certbot renew --dry-run
Мне выдало следующее:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/mysite.ru.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for mysite.ru
Failed to renew certificate mysite.ru with error: Missing command line flag or config entry for this setting:
Input the webroot for mysite.ru:
Внимание!
В вашем случае путь /etc/letsencrypt/renewal/mysite.ru.conf будет свой.
Причина ошибки
В нашем случае не обновляется сертификат Let’s Encrypt из-за того, что Certbot не может найти параметр webroot в конфигурации /etc/letsencrypt/renewal/mysite.ru.conf, поэтому просит его ввести вручную.
Как исправить?
Посмотри, какой метод использовался для получения сертификата:
sudo cat /etc/letsencrypt/renewal/mysite.ru.conf
Ищи строку authenticator = ...
, она указывает, как был получен сертификат.
В моем случае authenticator = webroot
, значит, нужен путь к webroot.
Посмотри конфигурацию Nginx для mysite.ru:
sudo grep -r "root" /etc/nginx/sites-available/
или:
sudo grep -r "root" /etc/nginx/sites-enabled/
Должно выдать примерно следующее:
/etc/nginx/sites-enabled/mysite.ru.conf: root /var/www/mysite.ru/html;
В этом примере webroot = /var/www/mysite.ru/html
.
Добавь webroot в конфиг Certbot
Открой файл конфигурации:
sudo nano /etc/letsencrypt/renewal/mysite.ru.conf
И добавь в него строку:
[[webroot_map]]
mysite.ru = /var/www/mysite.ru/html
Должно получиться примерно как на картинке ниже:
![Указали [[webroot_map]] для Let's Encrypt](https://adminprog.ru/wp-content/uploads/2025/02/Ne-obnovlyaetsa-sertifikat-lets-encrypt-1.jpg)
Сохраняем изменения и выходим из nano.
Протестируй обновление
Запусти тестовое обновление:
sudo certbot renew --dry-run
Если ошибок нет — запусти реальное обновление:
sudo certbot renew
Возможные ошибки если не обновляется сертификат Let’s Encrypt
Если после исправления webroot_map сертификат всё равно не обновляется, проверь следующее:
Проверка прав доступа к webroot
Убедись, что пользователь, от которого выполняется Certbot (обычно root), имеет доступ к каталогу /var/www/mysite.ru/html. Можно проверить так:
ls -ld /var/www/mysite.ru/html
Если прав не хватает, попробуй исправить:
sudo chown -R www-data:www-data /var/www/mysite.ru/html
sudo chmod -R 755 /var/www/mysite.ru/html
Проверка работоспособности .well-known/acme-challenge
Создай тестовый файл:
sudo mkdir -p /var/www/mysite.ru/html/.well-known/acme-challenge
echo "test" | sudo tee /var/www/mysite.ru/html/.well-known/acme-challenge/test.txt
Попробуй открыть в браузере http://mysite.ru/.well-known/acme-challenge/test.txt. Если выдаёт 404, значит, Nginx не пропускает этот путь.
Проверка Nginx-конфигурации
В файле /etc/nginx/sites-available/mysite.ru.conf или где находится конфигурация, добавь (если ещё нет):
location ^~ /.well-known/acme-challenge/ {
root /var/www/mysite.ru/html;
allow all;
}
Перезапусти Nginx:
sudo systemctl reload nginx
После этих проверок снова протестируй обновление сертификата.
Заключение
Теперь, если не обновляется сертификат Let’s Encrypt, у вас есть пошаговое руководство по устранению этой проблемы. Я показал вам возможные причины ошибки, как проверить настройки Certbot, Nginx и права доступа. Следуя этим рекомендациям, вы сможете успешно обновлять SSL-сертификаты и обеспечивать безопасность своего сайта.
Помогла статья? Подписывайся на Telegram канал автора.
Анонсы всех статей, много другой полезной и интересной информации, которая не попадает на сайт.
Если у вас имеются вопросы, задавайте их в комментариях.