Блог Amazon Web Services
Как использовать AWS Certificate Manager вместе с AWS CloudFormation
Оригинал статьи: ссылка (Louay Shaat, Senior Security Solutions Architect)
В прошлом месяце компания Amazon Web Services (AWS) представила возможность автоматизировать выдачу и валидацию публичных и приватных сертификатов с помощью AWS CloudFormation.
Чтобы облегчить эту задачу, AWS выпустила новую функциональность, которая позволяет вам:
- автоматизировать шаги по валидации вашего доменного имени с использованием DNS для выдачи публичного сертификата;
- использовать шаблоны AWS CloudFormation для выдачи приватных сертификатов с использованием AWS Certificate Manager (ACM);
- отключить сохранение данных прозрачности сертификатов (certificate transparency), если вы не хотите, чтобы ваши сертификаты автоматически сохранялись в публичный журнал прозрачности сертификатов.
В этой статье я объясню, как использовать эти возможности в AWS CloudFormation. Я также покажу примеры шаблонов, чтобы помочь вам с использованием новой функциональности.
Автоматизация выдачи публичного сертификата с валидацией по DNS
Перед выпуском сертификата для вашего сайта, АСМ сервис должен проверить, что вы являетесь владельцем или контролируете все домены, указанные в запросе. При создании сертификата вы можете выбрать либо валидацию по e-mail, либо валидацию по DNS.
Раньше, когда вы выбирали валидацию по DNS, вам требовалось вручную добавить необходимую CNAME-запись в зону Amazon Route53.
Примечание: ACM использует CNAME-запись для подтверждения, что вы являетесь владельцем или контролируете домен.
Новая функциональность позволяет AWS CloudFormation производить валидацию вашего публичного сертификата с использованием DNS, если стек AWS CloudFormation создаётся в том же аккаунте, где находится домен Route 53. Для включения этой возможности используйте параметр HostedZoneId, указывающий на зону, где будет создана необходимая CNAME-запись.
Ниже приведён фрагмент шаблона AWS CloudFormation для ACM, в котором указано значение HostedZoneId.
При создании этого ресурса через AWS CloudFormation вы увидите значение CNAME-записи, сгенерированное ACM. AWS CloudFormation использует эту информацию для обновления зоны, указанной вами в HostedZoneId. На изображении ниже можно увидеть значение CNAME в колонке Status reason на странице Events, содержащей все события стека.
Теперь вы можете автоматизировать выдачу публичных сертификатов с помощью ACM и включить этот процесс в ваш общий стек.
Автоматизация создания приватных сертификатов
Также вы можете использовать шаблоны AWS CloudFormation для автоматизации выпуска ваших приватных сертификатов.
Обратите внимание, что для выдачи приватного сертификата в ACM вам нужен приватный центр сертификации (certificate authority). Вы можете найти информацию о том, как его создать, в документации по ссылке.
Отключение прозрачности сертификатов
Прозрачность сертификатов (Certificate Transparency) – это открытый фреймворк, который осуществляет мониторинг и аудит сертификатов SSL/TLS. Стандарт определяет систему публичных журналов, в которые в конечном итоге будут записываться все сертификаты, выданные публичными центрами сертификации. Это позволит эффективно идентифицировать ошибочно или злонамеренно выданные сертификаты.
Каждая запись в журнале прозрачности сертификатов содержит информацию о всех публично доверенных цифровых сертификатах, если только вы специально не отключите прозрачность сертификатов при их создании. Эти журналы содержат информацию об открытом ключе сертификата, его субъекте и издателе.
Журналы прозрачности сертификатов хранят криптографически защищенные записи c информацией о сертификатах без возможности изменения. То есть, записи можно только добавлять в журнал, но нельзя удалять, модифицировать или каким-то другим способом менять или создавать сертификаты задним числом.
Вы можете отключить прозрачность сертификатов в вашем шаблоне AWS CloudFormation. Для этого необходимо добавить параметр CertificateTransparencyLoggingPreference и установить для него значение DISABLED.
Примечание: Указанный параметр может принимать два значения: ENABLED или DISABLED.
Ниже приведён фрагмент шаблона AWS CloudFormation, который включает в себя параметр CertificateTransparencyLoggingPreference.
Заключение
С помощью описанной выше новой функциональности для автоматизации выдачи публичных и приватных сертификатов, а также отключения прозрачности сертификатов вы можете использовать приватный центр сертификации ACM в вашем полностью автоматизированном решении для инфраструктуры-как-кода (infrastructure-as-code).