Не обновляется сертификат Let’s Encrypt

При обновлении сертификатов 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

Сохраняем изменения и выходим из 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 канал автора.

Анонсы всех статей, много другой полезной и интересной информации, которая не попадает на сайт.

Если у вас имеются вопросы, задавайте их в комментариях.

Оставьте комментарий