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

Последнее обновление:

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

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

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

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

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

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

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

Requesting challenges to validate example.com

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

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

Requesting authorization to act for example.com

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

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

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

Для получения сертификата для example.com, агент формирует запрос в ЦС Let’s Encrypt согласно PKCS#10, так называемый CSR - [Certificate Signing Request](https://tools.ietf.org/html/rfc2986). Обычно, CSR содержит цифровую подпись закрытым ключом, соответствующим открытому ключу, передаваемому в CRC. Агент также подписывает весь CSR уполномоченным ключом для example.com , чтобы Центр Сертификации Let’s Encrypt знал, то запрос авторизован.

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

Requesting a certificate for example.com

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

Requesting revocation of a certificate for example.com