Последнее обновление:
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 может предложить агенту на выбор:
- Предоставить DNS-запись для поддомена внутри
example.com
, или - Предоставить HTTP-ресурс с определённым URI внутри
http://example.com/
Одновременно с тестированием прав администратора на домен, Let’s Encrypt проверяет права агента на открытый и закрытый ключи. Let’s Encrypt отправляет агенту одноразовый пароль, который агент должен подписать закрытым ключом и отослать обратно.
Агент пытается выполнить серию тестов для проверки прав на домен. Допустим, успешно выполнено задание по созданию HTTP-ресурса - создан файл по определённому пути внутри http://example.com
. Кроме того, агентом получен одноразовый пароль, который был подписан закрытым ключом и отправлен обратно в Let’s Encrypt. Как только эти пункты выполнены - агент уведомляет Центр Сертификации о завершении проверки.
Затем наступает черёд ЦС проверить что вызовы были удовлетворены с нескольких сетевых направлений. Проверяется: корректная цифровая подпись на одноразовом пароле, возможность скачать созданный файл по URI, а также его содержимое.
Если цифровая подпись верна, и все тесты пройдены - агенту выдаются права на управление сертификатами для домена 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 и возвращает его агенту. ЦС также запишет этот сертификат в несколько публичных журналов Прозрачности Сертификатов (Certificate Transparency logs). Больше подробностей здесь.
Отзыв сертификата происходит аналогично. Агент подписывает запрос об отзыве ключевой парой, авторизованной для example.com
, и ЦС Let’s Encrypt подтверждает авторизацию запроса. Если да, то он публикует информацию об отзыве в обычных каналах отзыва (т.е. OCSP), чтобы проверяющие стороны, такие как браузеры, могли знать, что им не следует принимать отозванный сертификат.