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

Let’s Encrypt и протокол ACME решают проблему автоматической настройки HTTPS на сервере, когда SSL / TLS сертификаты выдаются и обновляются без участия человека. Таким решением стал специальный сервис - агент по управлению сертификатами - работающий на web-сервере.

Для понимания технологии, разберём настройку домена https://example.com/ агентом сертификатов Let’s Encrypt, состоящую из двух этапов.

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

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

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

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

Одновременно с тестированием прав администратора на домен, Let’s Encrypt проверяет права агента на открытый и закрытый ключи. Let’s Encrypt отправляет агенту одноразовый пароль, который агент должен зашифровать закрытым ключом и отослать обратно.

Requesting challenges to validate example.com

Агент пытается выполнить серию тестов для проверки прав на домен. Допустим, успешно выполнено задание по созданию HTTP-ресурса - создан файл по определённому пути внутри https://example.com. Кроме того, агентом получен одноразовый пароль, который был подписан закрытым ключом и отправлен обратно в Let’s Encrypt. Как только эти пункты выполнены - агент уведомляет Центр Сертификации о завершении проверки.

Далее, Центр Сертификации проверяет, всё ли было сделано верно: корректную цифровую подпись на одноразовом пароле, возможность скачать созданный файл по URI, а также его содержимое.

Requesting authorization to act for example.com

Если цифровая подпись верна, и все тесты пройдены - агенту выдаются права на управление сертификатами для домена example.com. Ключевая пара (открытый и закрытый ключи), используемая при проверке прав на домен, называется “авторизованной ключевой парой” для example.com.

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

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

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

При получении CSR, ЦС Let’s Encrypt проверяет подписи ключевой пары. Если всё в порядке, Центр Сертификации выпускает сертификат для example.com с открытым ключом из CSR, и отправляет его агенту.

Requesting a certificate for example.com

Отзыв сертификата происходит аналогично. Агент подписывает запрос об отзыве ключевой парой, авторизованной для example.com. Как только ЦС Let’s Encrypt подтверждает цифровые подписи запроса, он публикует информацию об отзыве сертификата, используя OSCP. Таким образом браузеры, полагаясь на данные из OSCP, не будут принимать отозванные сертификаты.

Requesting revocation of a certificate for example.com