Как настроить автоматическое обновление сертификатов Let’s Encrypt с помощью certbot

6 минут чтения
Средний рейтинг статьи — 4.8

Let’s Encrypt — это бесплатный центр сертификации, который позволяет выпускать SSL/TLS-сертификаты для сайтов без ручного оформления и оплаты.
Благодаря ему можно легко включить HTTPS на сервере и обеспечить шифрование трафика между пользователем и сайтом.

Сертификаты Let’s Encrypt действуют 90 дней, поэтому важно настроить их автоматическое продление, чтобы сайт не стал внезапно недоступен по HTTPS.
Для этого используется утилита Certbot, которая умеет:

  • выпускать новые сертификаты для доменов;
  • автоматически продлевать существующие;
  • обновлять конфигурации Nginx или Apache;
  • уведомлять о возможных ошибках при обновлении.

Установка Certbot

Для начала нужно установить Certbot на сервер.
На Ubuntu это делается одной командой:

sudo apt install certbot python3-certbot-nginx -y

Если вы используете Apache — поставьте вместо python3-certbot-nginx пакет python3-certbot-apache.

Проверим, что утилита установлена:

certbot --version

Получение первого сертификата

Предположим, у вас настроен сайт на Nginx с доменом example.com.
Certbot умеет сам находить конфигурации Nginx и добавлять SSL-настройки автоматически.

Выпускаем первый сертификат:

sudo certbot --nginx -d example.com -d www.example.com

Certbot:

  • подтвердит владение доменом через HTTP-челлендж;
  • добавит секцию listen 443 ssl; и пути к сертификатам в Nginx-конфиг;
  • создаст директорию /etc/letsencrypt/live/example.com/ со следующими файлами:
    • fullchain.pem — публичный сертификат;
    • privkey.pem — приватный ключ.

После этого сайт уже будет доступен по HTTPS.

Проверка HTTPS-конфигурации

Чтобы убедиться, что всё работает корректно, можно перезапустить сервер и выполнить:

sudo nginx -t
sudo systemctl reload nginx

А затем открыть сайт в браузере — зелёный замок в адресной строке означает, что SSL подключен успешно.

Настройка автоматического обновления

Certbot устанавливает системный cron или systemd timer, который сам проверяет срок действия сертификатов и продлевает их при необходимости.
Чтобы убедиться, что автопродление включено, выполните:

sudo systemctl list-timers | grep certbot

Обычно таймер certbot.timer выполняется дважды в день.

Также можно вручную протестировать процесс продления:

sudo certbot renew --dry-run

Если вы видите сообщение Congratulations, all renewals succeeded! — значит всё настроено правильно.

Пример ручной настройки cron-задачи (если нужно)

Если по каким-то причинам systemd недоступен (например, на старом сервере), можно добавить задачу в crontab вручную:

sudo crontab -e

И вставить строку:

0 3 * * * certbot renew --quiet && systemctl reload nginx

Эта команда будет выполняться каждый день в 03:00 ночи, проверяя срок действия сертификатов и перезагружая Nginx при обновлении.

Что делать при ошибках обновления

Если сертификат не продлевается, чаще всего причина одна из следующих:

  1. Сервер недоступен снаружи — Let’s Encrypt не может проверить домен.
  2. Пути изменены — конфигурация Nginx не соответствует /.well-known/acme-challenge/.
  3. Истёк DNS-запись — домен больше не указывает на нужный IP.

Посмотреть журнал ошибок можно так:

sudo tail -n 50 /var/log/letsencrypt/letsencrypt.log

Как проверить срок действия сертификата

Проверить, когда истекает сертификат, можно одной командой:

sudo openssl x509 -enddate -noout -in /etc/letsencrypt/live/example.com/fullchain.pem

Также удобно использовать Certbot напрямую:

sudo certbot certificates

Как продлить сертификаты вручную

Если вам нужно обновить сертификаты прямо сейчас, просто выполните:

sudo certbot renew
sudo systemctl reload nginx

Certbot проверит все домены и продлит те, чей срок действия меньше 30 дней.

Заключение

Certbot — это простой и надёжный инструмент, который позволяет автоматически управлять SSL-сертификатами Let’s Encrypt.
После единовременной настройки вы получаете полностью автоматическую схему:

  • HTTPS включён и обновляется без вашего участия;
  • сервер сам продлевает сертификаты каждые 60–75 дней;
  • Nginx или Apache перезапускаются при необходимости.

Такой подход избавляет от ручной рутины и гарантирует, что ваш сайт всегда будет защищён и доступен по безопасному протоколу HTTPS.

6 минут чтения
Средний рейтинг статьи — 4.8

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний