JavaRush /Курсы /Docker SELF /Управление сертификатами и настройка автоматического обно...

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

Docker SELF
7 уровень , 4 лекция
Открыта

1. Проверка текущих сертификатов

Команда certbot certificates

Начнем с простого: как узнать, какие сертификаты уже установлены на вашем сервере? Let's Encrypt предоставляет удобный инструмент — certbot. С помощью команды certbot certificates можно получить подробную информацию о текущих сертификатах.

sudo certbot certificates

В результате вы увидите что-то вроде этого:

Found the following certs:
  Certificate Name: example.com
    Domains: example.com www.example.com
    Expiry Date: 2023-12-31 10:00:00+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem

Тут указаны важные детали:

  • Имя сертификата.
  • Домены, охваченные сертификатом.
  • Дата истечения срока действия (чтобы вы могли вовремя его обновить).
  • Путь к файлам сертификата и приватного ключа.

Полезный лайфхак:

Если у вас есть привычка игнорировать уведомления о сроках истечения, то эта команда станет вашим лучшим другом. Ведь никто не хочет быть тем программистом, который узнаёт об истёкшем сертификате от разгневанных пользователей.


2. Автоматическое обновление сертификатов

Под капотом Let's Encrypt

Сертификаты Let's Encrypt действуют 90 дней, чтобы минимизировать риски безопасности. Но вручную обновлять их каждые 3 месяца — это совсем не вариант. К счастью, для автоматизации используется встроенная команда:

sudo certbot renew

Этот процесс проверяет все сертификаты и автоматически обновляет те, которые уже близки к истечению.

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

Cron — это встроенный инструмент для планирования задач в Linux. Он запускает команды по расписанию, и это то, что нам нужно для автоматизации обновления сертификатов. Вот как настраивается Cron для обновления:

  1. Откройте редактор Cron для текущего пользователя:

    sudo crontab -e
    
  2. Добавьте следующую строку в конец файла:

    0 0 * * * certbot renew --quiet
    

    Эта команда запускает certbot renew каждый день в полночь. Флаг --quiet подавляет ненужный вывод, так что обновление будет происходить тихо и никого не беспокоя.

  3. Сохраните изменения и выйдите из редактора.

Теперь ваш сервер будет автоматически обновлять сертификаты, и можно не переживать за истечение срока действия (ну или почти).


3. Ручное обновление сертификатов

Иногда автоматизация не решает всех проблем, и приходится обновлять сертификаты вручную. Например, если вы только что добавили новый домен в конфигурацию сайта, вам нужно вручную запросить новый сертификат. Снова на помощь приходит certbot:

Пример команды:

sudo certbot renew

Обновление сертификата для конкретного домена

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

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

Здесь:

  • --nginx указывает, что конфигурация будет автоматически применена к серверу Nginx. Для Apache используется --apache.
  • Флаги -d перечисляют домены, для которых требуется выпуск сертификата.

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


4. Уведомления и мониторинг

Email-уведомления

При установке Certbot он запросил ваш email-адрес. Если вы указали его, то будете получать уведомления за 20 дней до истечения сертификата. Если вы вдруг не указали email или хотите его заменить, это можно сделать так:

sudo certbot register --update-registration --email newaddress@example.com

Теперь никакая ситуация не застанет вас врасплох. Ну, почти.

Проверка снаружи

Существуют сторонние сервисы, которые могут помочь вам отслеживать срок действия сертификатов. Например, SSL Labs. Просто введите адрес сайта, и сервис проверит его сертификат, включая срок действия, цепочку доверия и уровень безопасности.


5. Удаление ненужных сертификатов

Иногда старые сертификаты становятся неактуальными, например, если вы перестали обслуживать какой-то домен. Чтобы не захламлять систему, лучше их удалить.

Команда для удаления:

sudo certbot delete

Certbot покажет список доступных сертификатов и предложит выбрать, какой из них удалить.

Полезный совет:

Будьте осторожны при удалении сертификатов, чтобы случайно не вырубить рабочий сайт. Всегда проверяйте, что сертификат больше нигде не используется.


6. Примеры и отладка ошибок

Проверка после обновления

После любых изменений или обновлений сертификатов всегда проверяйте, что сайт работает корректно. Проще всего это сделать с помощью curl:

curl -I https://example.com

Ожидаемый результат — код HTTP/1.1 200 OK.

Если что-то пошло не так, в первую очередь смотрите логи:

  • Для Nginx:

      sudo tail -f /var/log/nginx/error.log
    
  • Для Apache:

      sudo tail -f /var/log/apache2/error.log
    

Частая ошибка: "Too Many Requests"

Если вы слишком часто запрашиваете новые сертификаты, Let's Encrypt может заблокировать вам доступ с ошибкой "Too Many Requests". В таких случаях рекомендуется использовать тестовый сервер Let's Encrypt:

sudo certbot certonly --test-cert --nginx -d example.com

Эта команда выдаёт тестовый сертификат, который не действителен для реального использования, но поможет проверить конфигурацию.


7. Заключительный шаг: автоматический перезапуск веб-сервера

Let's Encrypt обновляет файлы сертификатов, но веб-серверы, такие как Nginx или Apache, не замечают изменений, пока их не перезапустишь. Это тоже можно автоматизировать. Обновите Cron-запись:

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

Или для Apache:

0 0 * * * certbot renew --quiet && systemctl reload apache2

Теперь после обновления любой сертификат будет сразу же применён к серверу.


Эта лекция нацелена на то, чтобы вы могли спокойно спать по ночам, зная, что ваши сертификаты обновляются автоматически, сайты защищены, а вы не получите звонок от босса в три часа ночи со словами "Пользователи жалуются, что сайт недоступен". Управление сертификатами — это важный навык, который пригодится в реальной работе, особенно если вы планируете заниматься развёртыванием крупных веб-приложений или DevOps-инженерией.

1
Задача
Docker SELF, 7 уровень, 4 лекция
Недоступна
Проверка установленных сертификатов
Проверка установленных сертификатов
1
Задача
Docker SELF, 7 уровень, 4 лекция
Недоступна
Обновление сертификата для конкретного домена
Обновление сертификата для конкретного домена
1
Задача
Docker SELF, 7 уровень, 4 лекция
Недоступна
Автоматическое обновление сертификатов с перезагрузкой веб-сервера
Автоматическое обновление сертификатов с перезагрузкой веб-сервера
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 11
30 сентября 2025
на 80% повтор прошлой лекции