О Обходчик
← Блог

Сертификат SSL истёк: что делать

Истёкший сертификат чинится за десять минут. Но если не найти, почему он не продлился сам, через три месяца всё повторится.

Руслан Хуснутдинов, основатель Обходчика около 4 мин чтения

Утром сайт открывается красным экраном: «Подключение не защищено», «Срок действия сертификата истёк». Посетитель видит предупреждение на весь экран, кнопку «Назад» и мелкую ссылку «Дополнительно», по которой никто не нажимает. Для него сайта больше нет.

Хорошая новость в том, что чинится это быстро — обычно за десять минут. Плохая — что без разбора причины через три месяца всё повторится.

Что именно произошло

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

Сертификат не истекает внезапно: дата окончания известна с момента выпуска. Если он всё-таки истёк, значит, сломалось продление — и чинить надо обе вещи: сначала сертификат, потом продление.

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

Если сертификат от Let’s Encrypt

Такие сертификаты продлевает программа на сервере — обычно certbot или встроенный механизм панели хостинга. Порядок действий:

  1. Запустите продление вручную: в панели хостинга — кнопкой перевыпуска, на своём сервере — командой продления certbot.
  2. Если команда завершилась ошибкой, прочитайте её: это и есть причина, по которой продление не сработало само.
  3. Перезагрузите веб-сервер. Новый сертификат лежит на диске, но nginx или Apache продолжают отдавать старый, пока их не перезапустят.
  4. Проверьте результат снаружи: откройте сайт в приватном окне или воспользуйтесь онлайн-проверкой сертификата.

Если сертификат платный

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

Если сайт за CDN или прокси

Сертификат может отдавать не ваш сервер, а CDN — тогда продлевать его нужно там. Посмотрите, кто выдал сертификат, который видит браузер: если это не тот, что стоит у вас на сервере, значит, сайт открывается через посредника.

Почему не сработало автопродление

Автопродление почти никогда не отключают специально. Оно ломается тихо, и причин всего несколько.

Сайт переехал. Сертификат выпускали на старом сервере, задание продления осталось там же. Новый сервер о нём не знает.

Изменился DNS или закрылся порт. Let’s Encrypt проверяет, что домен ваш, запросом к сайту по порту 80 или записью в DNS. Если после правок порт закрыт, редирект ведёт не туда или DNS смотрит на другой адрес, проверка не проходит и сертификат не выпускается.

Потерялся перезапуск веб-сервера. Сертификат продлился, но сервер его не перечитал. На диске новый, клиентам отдаётся старый — и в какой-то день он истекает.

Сломалась оплата. У платного сертификата продление — это покупка. Карта истекла, письмо о неудачном списании ушло на ящик, который никто не читает.

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

Как не допустить в следующий раз

Проверять нужно не задание продления, а результат: какой сертификат сайт отдаёт прямо сейчас и сколько дней ему осталось. Это единственный показатель, который не врёт, — он одинаково ловит сломанный certbot, забытый перезапуск, переезд и неоплаченный заказ.

Практический порог — тридцать дней. Let’s Encrypt начинает продление за месяц до конца срока, поэтому если за тридцать дней до окончания сертификат всё ещё старый, автопродление уже не сработало, и у вас есть месяц, чтобы спокойно разобраться. Для платных сертификатов запас стоит брать больше: выпуск с проверкой организации идёт до недели.

Это делает мониторинг SSL: раз в сутки смотрит на сертификат сайта и присылает предупреждение, когда до окончания остаётся меньше порога. Истёкший сертификат — одна из немногих аварий, о которой можно узнать за месяц до того, как она случилась.

Коротко

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

Проверить у себя

Бесплатно и без регистрации, по одному домену.

← Другие разборы в блоге