ACME – новый стандарт для работы с SSL-сертификатами

IETF одобрили стандарт Automatic Certificate Management Environment (ACME), который поможет автоматизировать получение SSL-сертификатов. 

Зачем понадобился стандарт

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

Процедура валидации домена у каждого сертификационного центра может отличаться. Отсутствие стандартизации порой приводит к проблемам с безопасностью. Известен случай, когда из-за бага в системе один CA верифицировал все заявленные домены. В таких ситуациях SSL-сертификаты могут выдаваться мошенническим ресурсам.

Одобренный IETF протокол ACME (спецификация RFC8555) должен автоматизировать и стандартизировать процесс получения сертификата. А исключение человеческого фактора поможет повысить надежность и безопасность верификации доменного имени.

Стандарт является открытым, и внести вклад в его разработку могут все желающие. В репозитории на GitHub опубликованы соответствующие инструкции.

Как это работает

Обмен запросами в ACME происходит по HTTPS с помощью JSON-сообщений. Для работы с протоколом необходимо установить на целевой узел ACME-клиент, он генерирует уникальную пару ключей при первом обращении к CA. Впоследствии они будут использоваться для постановки подписи на всех сообщениях клиента и сервера.

Первое сообщение содержит контактную информацию о владельце домена. Оно подписывается закрытым ключом и вместе с открытым ключом отправляется серверу. Он проверяет подлинность подписи и, если все в порядке, начинает процедуру выдачи SSL-сертификата.

Чтобы получить сертификат клиент должен доказать серверу факт владения доменом. Для этого он совершает определённые действия, доступные только собственнику. Например, центр сертификации может сгенерировать уникальный токен и попросить клиента разместить его на сайте. Далее, CA формирует веб- или DNS- запрос для извлечения ключа из этого токена.

К примеру, в случае с HTTP ключ из токена необходимо поместить в файл, который будет обслуживаться веб-сервером. При DNS-верификации сертификационный центр будет искать уникальный ключ в текстовом документе DNS-записи. Если всё в порядке, сервер подтверждает, что клиент прошел валидацию и CA выпускает сертификат.

По словам IETF, ACME будет полезен администраторам, которым приходится работать с несколькими доменными именами. Стандарт поможет связать каждый из них с нужными SSL.

Среди достоинств стандарта эксперты также отмечают несколько механизмов безопасности. Они должны гарантировать, что SSL-сертификаты выдаются только настоящим владельцам доменов. В частности, для защиты от DNS-атак применяется набор расширений DNSSEC, а для защиты от DoS стандарт ограничивает скорость выполнения отдельных запросов — например, HTTP для метода POST. Сами разработчики ACME рекомендуют для повышения безопасности добавлять энтропию к DNS-запросам и выполнять их из нескольких точек сети.

Для получения сертификатов также применяют протоколы SCEP и EST.

Первый был разработан в Cisco Systems. Его целью было упростить процедуру выдачи цифровых сертификатов X.509 и сделать её максимально масштабируемой. До появления SCEP этот процесс требовал активного участия сисадминов и плохо масштабировался. Сегодня этот протокол является одним из наиболее распространённых.

Что касается EST, то он позволяет PKI-клиентам получать сертификаты по безопасным каналам. Он применяет TLS для передачи сообщений и выпуска SSL, а также для привязки CSR к отправителю. Кроме того, EST поддерживает методы эллиптической криптографии, что создает дополнительный уровень защиты.

По мнению экспертов, решения вроде ACME должны будут получить более широкое распространение. Они предлагают упрощенную и безопасную модель настройки SSL, а также ускоряют процесс.

Источник: habr