Ошибки

Certbot: renew --dry-run не прошёл — Failed to renew certificate

Команда certbot renew --dry-run проверяет продление на тестовом сервере Let’s Encrypt. Если она не прошла, настоящее продление тоже не пройдёт: причина — в строке Failed to renew certificate и выше.

Обновлено 10.10.2026≈ 5 мин чтения
Содержание 10

Что сделать прямо сейчас

  1. Запустите проверку продления — шаг 1.
  2. Найдите текст ошибки для каждого сертификата — шаг 2.
  3. Откройте разбор этой ошибки — шаг 3.
  4. Убедитесь, что продление стоит в расписании, — шаг 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, DetailSome challenges have failed — по строке Type и Detail
Could not bind TCP port 80Could not bind TCP port 80 — сертификат получали с --standalone
The requested nginx plugin does not appear to be installedПлагин nginx не установлен
Another instance of Certbot is already runningCertbot уже запущен
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:, а некоторые строки могут немного отличаться.

Источники

Сверено 10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026