Как работает Let's Encrypt

Последнее обновление: August 2, 2025

Цель Let’s Encrypt и протокола ACME — сделать возможной настройку HTTPS-сервера, при которой он сможет автоматически получать сертификаты, пользующиеся доверием браузеров, без какого-либо участия человека. Это достигается запуском ACME-клиента на веб-сервере.

Чтобы понять, как работает эта технология, давайте разберем процесс настройки https://example.com/ с помощью ACME-клиента.

Настройка состоит из двух этапов. Сначала ACME-клиент доказывает центру сертификации (ЦС), что веб-сервер контролирует домен. После этого клиент может запрашивать или отзывать сертификаты для этого домена.

Проверка домена

Let’s Encrypt идентифицирует ACME-клиент по открытому ключу. При первом взаимодействии ACME-клиента с Let’s Encrypt создается новая пара ключей учетной записи, а также подтверждается, что оператор контролирует один или несколько доменов. В созданный аккаунт добавляются доменные имена, которыми владеет администратор, аналогично тому, как это происходит в обычных Центрах Сертификации.

Для начала процесса клиент обращается к центру сертификации Let’s Encrypt с вопросом, что именно нужно сделать, чтобы доказать наличие у него контроля над доменом example.com. Для каждого варианта Центр Сертификации Let’s Encrypt подготавливает серию тестов. Существуют различные способы, с помощью которых клиент может подтвердить контроль над доменом. Например, центр сертификации (ЦС) может предоставить клиенту выбор:

Requesting challenges to validate example.com

Клиентское программное обеспечение выполняет один из предложенных наборов задач. Допустим, успешно выполнено задание по созданию HTTP-ресурса - создан файл по определённому пути внутри http://example.com. После того как клиент выполнит эти шаги, он уведомляет центр сертификации (ЦС) о том, что готов к завершению проверки.

Затем наступает черёд ЦС проверить что вызовы были удовлетворены с нескольких сетевых направлений.

Requesting authorization to act for example.com

Если проверки пройдены успешно, то клиент, идентифицируемый с помощью открытого ключа, получает право управлять сертификатами для домена example.com.

Обратите внимание, что в этом процессе нельзя использовать HTTPS, что делает его уязвимым для определённых атак. Чтобы смягчить эту проблему, Let’s Encrypt выполняет несколько проверок параллельно — с разных сетевых точек. Это значительно затрудняет для злоумышленника успешное нарушение процесса проверки.

Выпуск и отзыв сертификатов

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

Выпуск

Для получения сертификата на домен, клиент формирует запрос на подпись сертификата в формате PKCS#10 Certificate Signing Request (CSR), в котором содержится обращение к центру сертификации Let’s Encrypt с просьбой выдать сертификат для домена example.com с использованием указанного открытого ключа. Обычно, CSR содержит цифровую подпись закрытым ключом, соответствующим открытому ключу, передаваемому в CRC. Клиент также подписывает весь CSR (запрос на подписание сертификата) с помощью ключа, авторизованного для домена example.com, чтобы удостоверяющий центр Let’s Encrypt знал, что запрос санкционирован.

Когда центр сертификации Let’s Encrypt получает запрос, он проверяет обе подписи. Если всё в порядке, выдаётся сертификат для example.com, содержащий открытый ключ из CSR, который затем возвращается клиенту. ЦС также запишет этот сертификат в несколько публичных журналов Прозрачности Сертификатов (Certificate Transparency logs). Больше подробностей здесь.

Requesting a certificate for example.com

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

Отзыв

Отзыв сертификата происходит аналогично. Клиент подписывает запрос на отзыв с помощью пары ключей учётной записи, авторизованной для example.com, а центр сертификации Let’s Encrypt проверяет, что этот запрос является авторизованным. В таком случае Let’s Encrypt публикует информацию об отзыве через список отозванных сертификатов (CRL), чтобы доверяющие стороны — например, браузеры — могли узнать, что им не следует доверять отозванному сертификату.

Requesting revocation of a certificate for example.com