Let's Encrypt: как работает бесплатный SSL и где подводные камни 90-дневного цикла
Let's Encrypt раздаёт SSL-сертификаты бесплатно и в автоматическом режиме — благодаря ему HTTPS стал нормой даже для домашних проектов. Но у бесплатного сертификата есть цена: 90-дневный срок жизни и полная ставка на автоматику, которая обязана срабатывать каждые пару месяцев без сбоев. А с июня 2025 года Let's Encrypt ещё и перестал присылать письма об истечении. Разбираем, как всё устроено и как не узнать о проблеме от посетителей.
Как это работает: ACME и три месяца доверия
Let's Encrypt — некоммерческий удостоверяющий центр, запущенный в конце 2015 года с простой идеей: сертификаты должны быть бесплатными и выпускаться роботом, а не менеджером. Робот работает по протоколу ACME: клиент на вашем сервере (чаще всего certbot или acme.sh) доказывает контроль над доменом — выкладывает проверочный файл на сайт (HTTP-01) или создаёт специальную DNS-запись (DNS-01), — и центр тут же выпускает сертификат. Всё занимает секунды, участие человека не предполагается.
Срок жизни такого сертификата — 90 дней, против года у классических платных. Это осознанное решение, а не жадность: короткий срок ограничивает ущерб от украденных ключей и принуждает к автоматизации продления. Штатная схема — клиент сам перевыпускает сертификат за 30 дней до конца срока, и владелец сайта годами не вспоминает о его существовании. Ровно в этом месте и прячется главный риск.
Что меняется в отрасли: сроки будут только короче
| Событие | Что это значит для владельца сайта |
|---|---|
| Июнь 2025 — Let's Encrypt прекратил рассылку писем об истечении сертификатов | Последняя «страховка для забывчивых» отключена: если автопродление сломалось, напоминать больше некому |
| 2025 — анонс короткоживущих сертификатов Let's Encrypt сроком 6 дней | Направление отрасли: автоматика становится не желательной, а единственно возможной |
| Решение CA/Browser Forum: максимальный срок любых публичных сертификатов поэтапно сокращается — до 47 дней к 2029 году | Даже платные «годовые» сертификаты доживают последние годы; продление руками уходит в прошлое во всей отрасли |
Вывод из таблицы один: вопрос «сработает ли продление» перестал быть вопросом раз в год — он теперь постоянный, и цена сбоя не меняется: истёкший сертификат означает алую страницу «Ваше подключение не защищено» у каждого посетителя. Сколько это стоит бизнесу, мы разбирали в кейсе про истёкший сертификат.
Пять способов, которыми ломается автопродление
1. Умер планировщик. Cron-задачу или systemd-таймер с certbot renew снесли при обновлении, переезде или чистке сервера. Всё выглядит нормальным ровно до 90-го дня.
2. Проверка больше не проходит. HTTP-01 требует, чтобы Let's Encrypt достучался до вашего сайта снаружи по 80-му порту. Закрыли порт файрволом, включили строгий гео-фильтр «только Россия», навесили WAF — и валидатор больше не проходит. Тот же класс проблем, что в истории про WAF и мониторинг: защита отрезала легитимного робота.
3. Сертификат обновился, сервис — нет. Файлы на диске свежие, но nginx никто не перезагрузил, и он продолжает отдавать старый сертификат из памяти до самого истечения. Коварнейший вариант: certbot рапортует об успехе, а сайт падает.
4. DNS-01 и сломанная запись. Wildcard-сертификаты продлеваются через DNS: клиент должен уметь создавать TXT-записи через API вашего DNS-хостинга. Сменили DNS-провайдера или отозвали API-токен — продление молча умерло.
5. Лимиты и внешние сбои. У Let's Encrypt есть лимиты на число выпусков; зацикленный скрипт может их исчерпать, а изредка случаются и сбои на стороне самого центра. Редко, но именно в неудачный день.
# Проверить, что автопродление вообще способно сработать: certbot renew --dry-run # Посмотреть, какой сертификат реально отдаёт сервер и до когда он жив: echo | openssl s_client -connect example.ru:443 -servername example.ru 2>/dev/null | openssl x509 -noout -dates
Половина инцидентов с Let's Encrypt — это свежий сертификат в папке и старый в памяти веб-сервера. Поэтому мониторить нужно снаружи: какой сертификат реально отдаётся по 443-му порту и сколько дней ему осталось. Внутренние проверки здесь систематически врут.
Чек-лист надёжного автопродления
| Пункт | Как проверить | Как часто |
|---|---|---|
| Планировщик жив | systemctl list-timers | grep certbot (или crontab -l) | После любых работ на сервере |
| Продление проходит | certbot renew --dry-run без ошибок | Раз в месяц и после смены конфигурации |
| Веб-сервер перечитывает сертификат | deploy-hook с reload nginx прописан в конфиге certbot | Один раз, но обязательно |
| Снаружи виден свежий сертификат | Внешняя проверка срока по 443-му порту | Автоматически, ежечасно |
| Все поддомены учтены | Сертификаты есть для www, api, lk и прочих живых поддоменов | При каждом новом поддомене |
Первые три пункта — внутренняя гигиена, четвёртый — внешний контур, который ловит всё, что просочилось мимо первых трёх. Именно связка «автоматика внутри + независимый контроль снаружи» делает 90-дневный цикл безопасным: каждый контур страхует слепые зоны другого.
Так платный сертификат надёжнее?
Нет — по части шифрования разницы никакой, а «годовой срок» как страховка от забывчивости доживает последние годы по решению отрасли (см. таблицу). Честная формула такая: Let's Encrypt плюс работающая автоматика плюс внешний контроль срока — это надёжнее, чем платный сертификат с ручным продлением и без контроля. Платные сертификаты сохраняют смысл в специфических случаях — корпоративные требования, OV/EV-валидация организации, страховки, — но для подавляющего большинства сайтов выбор давно сделан: по данным самих браузеров, львиная доля веба сегодня шифруется именно бесплатными автоматическими сертификатами.
Раз Let's Encrypt больше не напоминает об истечении — напоминать должен ваш мониторинг. Пруфен проверяет SSL-сертификат снаружи, как его видит браузер посетителя: срок действия, цепочку, соответствие домену — с интервалом от 1 часа. Уведомление приходит заранее, пока «сломанное продление» — это задача на пять минут, а не алый экран у всех посетителей. В паре с проверкой домена закрывает оба главных «календарных» риска сайта.
Частые вопросы
Let's Encrypt работает в России? Да: сертификаты выпускаются и продлеваются для доменов в любых зонах, включая .ru и .рф. Сложности возможны на уровне конкретных сетевых ограничений (валидатор должен достучаться до сайта), но сам сервис для российских доменов доступен.
Чем certbot отличается от acme.sh и панельных «кнопок SSL»? Ничем принципиальным — это разные ACME-клиенты одного протокола. Панели хостингов (ispmanager, cPanel и другие) обычно встраивают тот же механизм; надёжность определяется не клиентом, а тем, работает ли продление и перезагружается ли веб-сервер после него.
Почему сертификат «слетает» ровно раз в три месяца? Потому что 90-дневный цикл делает любую поломку периодической: сломанное продление проявляется на 90-й день, затем на 180-й — до тех пор, пока не починят первопричину из списка выше.
Как проверить сертификат прямо сейчас, без терминала? Кликните на замок в адресной строке браузера — там видны срок и издатель. Разовая проверка хороша для диагностики; систематический контроль срока — задача мониторинга, подробнее — в статье о проверке SSL.