Почему он появился
До середины 2010-х получить сертификат для сайта означало оформить заявку, заплатить за неё у коммерческого центра, ждать проверки и вручную установить файл. Из-за этого значительная часть сайтов оставалась на голом HTTP. Let's Encrypt запустили как открытый центр сертификации, который выдаёт сертификаты для проверки домена автоматически и не берёт за них плату. Проект работает как некоммерческая организация ISRG и живёт на пожертвования и поддержку спонсоров.
Эффект был заметен по статистике браузеров: доля страниц, открываемых по HTTPS, за несколько лет выросла с меньшинства до подавляющего большинства. Конкретные цифры зависят от источника и периода, поэтому на них мы опираться не будем.
Протокол ACME: как устроена автоматика
Автоматизация основана на протоколе ACME. На сервере запускается клиент, самый известный называется Certbot, но есть множество других, а некоторые веб-серверы умеют делать это встроенно, например Caddy. Клиент создаёт пару ключей аккаунта, сообщает центру, для каких доменов нужен сертификат, и получает задания проверки.
Проверка бывает нескольких видов. При HTTP-проверке клиент кладёт заданный файл по особому пути на сайте, а центр пытается его скачать. При DNS-проверке клиент создаёт TXT-запись с заданным значением, и центр её ищет. Именно DNS-проверка нужна для сертификатов с подстановочным именем вида *.example.com. Если проверка прошла, центр подписывает сертификат, и клиент устанавливает его на сервер.
Про запись типа TXT мы отдельно пишем в разделе о DNS-записях.
Почему срок жизни короткий
Сертификаты Let's Encrypt действуют 90 дней, а клиенты обычно продлевают их заранее, примерно за месяц до окончания, поэтому на практике это происходит раз в два месяца через планировщик. Короткий срок сделан намеренно. Во-первых, при утечке ключа окно злоупотребления ограничено. Во-вторых, он заставляет автоматизировать процесс, а не полагаться на календарные напоминания.
Обратная сторона заключается в том, что сломанная автоматика приводит к отказу сайта через несколько недель. Типичные причины: закрытый порт 80 при HTTP-проверке, изменённая конфигурация прокси, истёкшие права на запись, смена DNS-провайдера. Полезно настроить мониторинг срока действия и уведомления на почту.
Ограничения и заблуждения
Первое заблуждение: «сертификат Let's Encrypt менее надёжен». Шифрование зависит от алгоритмов, а не от коммерческого статуса издателя. Он использует те же протоколы и те же принципы цепочки доверия, что и платные центры, о которых мы говорили в статье про центр сертификации.
Второе: «сертификат значит, что сайт честный». Нет. Проверяется только владение доменом, и мошеннические сайты также могут получить такие сертификаты. Замок в адресной строке сообщает о защищённом соединении, а не о порядочности владельца.
Существуют и практические ограничения: лимиты на число выпусков в неделю, отсутствие сертификатов с проверкой организации и невозможность выдать сертификат на голый IP-адрес в обычном режиме. Для сложных случаев требуются другие центры.
Как проверить у себя: Let's Encrypt
Откройте сведения о сертификате своего сайта. Если он выдан этим центром, в поле издателя увидите названия его промежуточных центров, а срок действия будет около трёх месяцев. Если вы администрируете сервер, команда certbot certificates покажет, какие сертификаты есть и когда они истекают, а certbot renew --dry-run проверит, что продление сработает без ошибок.
Для Caddy и подобных серверов все происходит без ручных шагов, достаточно указать домен. Хорошая практика — после настройки посмотреть журнал и убедиться, что планировщик продления действительно работает. Ошибку лучше обнаружить днём, а не в момент истечения срока.
Что делать при подстановочных и внутренних именах
Особые случаи требуют внимания. Для подстановочного сертификата нужна DNS-проверка, а значит, клиент должен управлять записями вашего DNS-провайдера через его программный интерфейс. Для нескольких серверов за балансировщиком сертификат обычно получают в одном месте и раздают на остальные. Для внутренних имён, не существующих в публичном DNS, публичный центр сертификат не выдаст: проверить владение невозможно. Тогда используют свой центр сертификации или получают сертификат на реальный публичный домен, который применяют и внутри. Такие решения обычно принимают на этапе проектирования, а не после сбоя.