Как работает 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 подготавливает серию тестов. Есть несколько способов проверить права на домен. Например, перед проверкой прав на домен 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. Обычно, CSR содержит цифровую подпись закрытым ключом, соответствующим открытому ключу, передаваемому в CRC. Агент также подписывает весь CSR уполномоченным ключом для example.com , чтобы Центр Сертификации Let’s Encrypt знал, то запрос авторизован.

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

Requesting a certificate for example.com

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

Requesting revocation of a certificate for example.com