Перейти к содержимому
EVI Solutions

Обновление SSL сертификата: как предотвратить истечение срока действия сайта

Средне 20 мин Обновлено:

Краткий ответ

SSL сертификат обновляется автоматически, если настроено автоматическое обновление (задание cron или таймер systemd), а коммерческий сертификат обновляется вручную до даты истечения. Проверьте дату истечения командой `openssl x509 -enddate -noout -in сертификат.crt`, настройте автоматическое обновление и следите за предупреждениями. Так вы предотвращаете простой сайта и предупреждения в браузере.

Как проявляется проблема

  • Браузер показывает предупреждение «Подключение не защищено» или «Срок действия сертификата истек»
  • Пользователи не могут получить доступ к сайту или отображается ошибка безопасности
  • HTTPS соединение прерывается или браузер не разрешает продолжить
  • Инструменты мониторинга сообщают, что срок действия сертификата истек
  • Письма об истечении срока действия сертификата приходят от удостоверяющего центра

Частые причины

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

Сертификаты Let's Encrypt действительны 90 дней, и рекомендуется автоматическое обновление. Если задание cron или таймер systemd не активен, сертификат истечет.

Задание cron для обновления не работает

Задание может быть написано с ошибкой, не хватать прав или выполняться в неправильной среде, поэтому обновление не происходит.

Ручное управление коммерческим сертификатом

Коммерческие сертификаты имеют ограниченный срок действия (согласно действующим правилам не более 200 дней) и обычно обновляются вручную. Без напоминания легко пропустить дату истечения.

Изменение конфигурации сервера

После миграции сайта или смены веб-сервера пути к сертификату или способ обновления могут быть неверными.

Неправильное системное время

Сервер может сообщать об истечении раньше из-за неправильного системного времени. Проверьте, что время точное.

Пошаговое решение

  1. 1

    Проверьте дату истечения сертификата

    Выполните openssl x509 -enddate -noout -in /путь/к/сертификату.crt, чтобы увидеть точную дату. Или в браузере нажмите на замок рядом с адресом и посмотрите сведения о сертификате. Запишите дату и сравните с текущей.

  2. 2

    Проверьте, активно ли автоматическое обновление

    Для Let's Encrypt с certbot выполните sudo certbot renew --dry-run. Если вывод успешен, обновление работает. В противном случае проверьте задания cron (например, с помощью sudo crontab -l) или таймеры systemd с systemctl list-timers.

  3. 3

    Обновите сертификат вручную

    Если сертификат истек, выполните sudo certbot renew. Если это не удается, выполните sudo certbot certonly --force-renewal -d вашсайт.ру; используйте --force-renewal только при необходимости из-за ограничений на количество выпусков. Для коммерческого сертификата скачайте новый у издателя, сделайте резервную копию старого файла и замените его.

  4. 4

    Перезагрузите веб-сервер

    После обновления примените изменения: sudo systemctl reload nginx или sudo systemctl reload apache2. Проверьте, что сайт снова работает по HTTPS.

  5. 5

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

    Если вы используете Let's Encrypt, используйте только один механизм автоматического обновления. Для cron проверьте, что в crontab пользователя root активно задание, например: 0 3 * * * /usr/bin/certbot renew --quiet (адаптируйте путь к certbot). Для systemd проверьте, что certbot.timer активен с systemctl status certbot.timer, и не используйте одновременно cron.

  6. 6

    Протестируйте обновление

    Выполните sudo certbot renew --dry-run, чтобы смоделировать обновление без реального выпуска. Убедитесь, что нет ошибок, связанных с аутентификацией или правами.

  7. 7

    Настройте мониторинг истечения

    Используйте инструмент, такой как ssl-cert-check, или внешний сервис мониторинга. Настройте оповещения как минимум за 14 дней до истечения. Регулярно проверяйте электронную почту от удостоверяющего центра.

Если ничего не помогает

Если сертификат не обновляется даже после ручного запуска, проверьте логи: sudo journalctl -u certbot.service или /var/log/letsencrypt/letsencrypt.log. Частые ошибки: неудачная HTTP аутентификация (для HTTP-01 challenge порт 80 должен быть доступен), неверный путь к каталогу webroot или отсутствие прав. Для коммерческих сертификатов проверьте, установлен ли промежуточный сертификат (CA bundle). Если сайт в продакшене и не должен быть недоступен, рассмотрите временное использование бесплатного сертификата, пока не решите проблему. Всегда делайте резервную копию конфигурации перед изменениями.

Как избежать повторения

  • Регулярно проверяйте дату истечения сертификата и настройте напоминания
  • Включите автоматическое обновление и тестируйте его раз в месяц
  • Следите за электронной почтой от удостоверяющего центра и не игнорируйте предупреждения
  • Используйте инструмент мониторинга, который уведомит вас до истечения

Когда лучше обратиться к специалисту

Если вы не уверены, как настроить автоматическое обновление, или сталкиваетесь с ошибками при обновлении, которые не можете решить, обратитесь к ИТ специалисту. Также, если сайт имеет высокий трафик и не должен быть недоступен, лучше доверить обновление профессионалам.

Обслуживание ИТ-инфраструктуры · Серверы, сети, резервное копирование, безопасность и helpdesk

Частые вопросы

Как часто нужно обновлять SSL сертификат?

Сертификаты Let's Encrypt действительны 90 дней, и рекомендуется автоматическое обновление. Коммерческие сертификаты сегодня чаще всего действительны значительно меньше года (согласно действующим правилам не более 200 дней), а точный срок зависит от издателя. Всегда проверяйте дату истечения и настраивайте автоматическое обновление, где это возможно.

Что происходит, если сертификат истекает?

Браузеры покажут предупреждение о небезопасном соединении, и пользователи могут отказаться от посещения. При использовании HSTS или более строгих политик безопасности доступ может быть полностью заблокирован, что влияет на безопасность и репутацию сайта.

Как узнать, что обновление прошло успешно?

После обновления проверьте новую дату истечения с помощью `openssl x509 -enddate -noout -in сертификат.crt` или в браузере. Убедитесь, что сайт работает без предупреждений и веб-сервер перезагружен.

Поделиться
Не нашли решение?ИИ-помощник работает 24/7. Опишите проблему или отправьте скриншот ошибки и получите инструкцию для вашего случая.Спросить ИИ-помощника