Последнее обновление:
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 может предложить агенту на выбор:
- Предоставить DNS-запись для поддомена внутри
https://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 Certificate Signing Request. Обычно, CSR содержит цифровую подпись закрытого ключа, соответствующий ему открытый ключ, а также подписывается целиком авторизованной ключевой парой.
При получении CSR, ЦС Let’s Encrypt проверяет подписи ключевой пары. Если всё в порядке, Центр Сертификации выпускает сертификат для example.com
с открытым ключом из CSR, и отправляет его агенту.
Отзыв сертификата происходит аналогично. Агент подписывает запрос об отзыве ключевой парой, авторизованной для example.com
. Как только ЦС Let’s Encrypt подтверждает цифровые подписи запроса, он публикует информацию об отзыве сертификата, используя OSCP. Таким образом браузеры, полагаясь на данные из OSCP, не будут принимать отозванные сертификаты.