Главное Авторские колонки Пресс-релизы Промо Вакансии Вопросы
130 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Сертификат истёк в пятницу вечером — и заказы перестали приходить на все выходные

Сертификат истёк в пятницу вечером — и владелец интернет-магазина всю ночь получал сообщения от клиентов вместо заказов. «Там же всё автоматически», — сказал он мне на созвоне. Автоматически — только если это реально настроено. Рассказываю, почему «включил один раз и забыл» с SSL не работает.
Мнение автора может не совпадать с мнением редакции

Сертификат истёк в пятницу вечером — и заказы перестали приходить на все выходные

Есть звонки, после которых сразу понимаешь: тут не «сайт немного тормозит», а настоящий пожар. Этот был из таких.

Интернет-магазин, PHP 8.2, nginx, обычная для среднего бизнеса конфигурация. В пятницу вечером у сайта истёк SSL-сертификат. Браузер начал показывать предупреждение «соединение не защищено» — и, конечно, любой нормальный покупатель, увидевший такое перед оплатой картой, закроет вкладку и не вернётся.

Продажи встали. Владелец получал сообщения в мессенджерах вместо заказов — люди писали спросить, не мошенники ли это, раз браузер ругается. Он был уверен, что «там же всё автоматически настроено». Проблема в том, что автоматически — это только если это реально настроено, а не просто когда-то было включено и с тех пор никто не проверял.

Почему это происходит именно с малым и средним бизнесом

Тут нет злого умысла разработчика — обычно всё проще и обиднее. Сертификаты Let’s Encrypt живут 90 дней специально: короткий срок повышает безопасность, а продление должно происходить автоматически через cron или systemd timer. Но «должно» и «происходит» — разные вещи.

Я насмотрелся на весь набор типичных причин, по которым автопродление тихо ломается: панель хостинга обновилась и поменяла путь к бинарнику, сертификат выпустили не для того поддомена, DNS-провайдер сменил API и валидация перестала проходить, или банально — после продления забыли перезагрузить nginx, и старый просроченный сертификат продолжает висеть в памяти сервера, хотя новый файл уже лежит на диске.

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

Что мы изменили после этого случая

Во-первых, перестали доверять только автопродлению «по умолчанию» на панели хостинга, если у проекта есть хоть какая-то критичность для бизнеса. Настроили renewal с запасом — обновление сертификата за 30 дней до истечения, а не впритык к дате, чтобы был буфер на случай, если что-то сломается в DNS или деплое ночью.

Во-вторых, добавили отдельный мониторинг именно срока действия сертификата — не общий uptime-чек, а конкретно дней до экспирации, с уведомлением заранее, а не постфактум, когда браузер уже показывает красный замок.

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

Вывод

SSL-сертификат — из тех вещей, про которые вспоминают, только когда он уже истёк. Для владельца бизнеса это звучит как техническая мелочь, а на деле — прямой канал, по которому утекают заказы каждую минуту простоя. Дешевле потратить час на нормальный мониторинг, чем терять продажи на выходных, когда никто из команды не онлайн. Подробный разбор настройки автопродления для nginx, certbot, Bitrix, WordPress и Laravel — в полной статье: гайд на webfull.ru.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем