Certbot: renew --dry-run не прошёл — Failed to renew certificate
Команда certbot renew --dry-run проверяет продление на тестовом сервере Let’s Encrypt. Если она не прошла, настоящее продление тоже не пройдёт: причина — в строке Failed to renew certificate и выше.
Содержание 10
Что сделать прямо сейчас
- Запустите проверку продления — шаг 1.
- Найдите текст ошибки для каждого сертификата — шаг 2.
- Откройте разбор этой ошибки — шаг 3.
- Убедитесь, что продление стоит в расписании, — шаг 4.
Все команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
Что значит это сообщение
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for example.com and www.example.com
Certbot failed to authenticate some domains (authenticator: nginx). The Certificate Authority reported these problems:
Identifier: example.com
Type: connection
Detail: 203.0.113.10: Fetching http://example.com/.well-known/acme-challenge/kD8…: Timeout during connect (likely firewall problem)
Hint: The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet.
Failed to renew certificate example.com with error: Some challenges have failed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
All simulated renewals failed. The following certificates could not be renewed:
/etc/letsencrypt/live/example.com/fullchain.pem (failure)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 renew failure(s), 0 parse failure(s)
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.Certbot по очереди проверяет каждый сертификат, у которого есть файл настроек в папке /etc/letsencrypt/renewal/. С ключом --dry-run всё идёт на тестовом сервере Let’s Encrypt: сертификаты не меняются, лимиты не тратятся.
Processing …— какой сертификат проверяется сейчас;Failed to renew certificate example.com with error: …— продление этого сертификата не прошло, после словаerror:— коротко причина;All simulated renewals failed— не прошли все сертификаты, ниже их список с пометкой(failure);1 renew failure(s), 0 parse failure(s)— итог: сколько сертификатов не продлено и сколько файлов настроек не удалось прочитать.
Здесь продление не прошло, потому что Let’s Encrypt не смог подключиться к серверу по порту 80. Вместо example.com в примерах подставьте свой домен. Адрес 203.0.113.10 в примерах — условный, у вас в сообщении будет IP-адрес из DNS вашего домена.
Шаг 1. Запустите проверку продления
sudo certbot renew --dry-runШаг 2. Найдите текст ошибки
Для каждого сертификата найдите строку Failed to renew certificate. Текст после with error: — короткое описание. Если там Some challenges have failed., подробности — выше, в строках Type и Detail.
Шаг 3. Исправьте причину
| Что написано | Где разбор |
|---|---|
Some challenges have failed и строки Type, Detail | Some challenges have failed — по строке Type и Detail |
Could not bind TCP port 80 | Could not bind TCP port 80 — сертификат получали с --standalone |
The requested nginx plugin does not appear to be installed | Плагин nginx не установлен |
Another instance of Certbot is already running | Certbot уже запущен |
too many certificates, too many failed authorizations | Лимиты Let’s Encrypt |
Строки nginx со словом [emerg] | Все ошибки nginx |
Если вместо Failed to renew есть строка Renewal configuration file … produced an unexpected error, Certbot не смог прочитать файл настроек продления. Такой сертификат попадает в счёт parse failure(s). Что именно не так, видно в журнале:
sudo tail -n 50 /var/log/letsencrypt/letsencrypt.logПосле исправления снова запустите sudo certbot renew --dry-run. Если всё в порядке, в конце будет:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/example.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Шаг 4. Проверьте расписание
Сам Certbot продлевает сертификаты по расписанию — за это отвечает служебный таймер. Проверьте, что он есть:
systemctl list-timers | grep certbotВ ответе должна быть строка с таймером, в имени которого есть certbot, и время следующего запуска. Если ответ пустой, расписания нет. Поставьте Certbot из snap, как в Как поставить сертификат на свой VPS, — snap сам заводит таймер продления.
Как проверить
sudo certbot renew --dry-run заканчивается строкой Congratulations, all simulated renewals succeeded:, а systemctl list-timers | grep certbot показывает таймер.
Похожие ошибки
| Сообщение | Чем отличается |
|---|---|
Certificate not yet due for renewal | Не ошибка: срок сертификата ещё далеко, без --dry-run Certbot его не продлевает |
| NET::ERR_CERT_DATE_INVALID | Сертификат уже истёк — так это выглядит в браузере |
Тексты сообщений сверены с исходным кодом Certbot 5.8.0 — эта версия ставится через snap, как в инструкции Бесплатный SSL-сертификат, — и сервера Let’s Encrypt. В Certbot 2.9.0 из пакетов Ubuntu 24.04 вместо Identifier: стоит Domain:, а некоторые строки могут немного отличаться.
Источники
- Исходный код Certbot 5.8.0: renewal.py — строки Processing, Failed to renew certificate и итог renew failure(s).
- Исходный код Certbot 5.8.0: main.py — строка Simulating renewal of an existing certificate.
- Сборка Certbot для snap: snapcraft.yaml — плагины в составе snap и таймер продления.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026