Я пытаюсь создать стек Cloudformation, который может быть предоставлен кем угодно (в основном я хочу поделиться им либо на торговой площадке, либо сделать его общедоступным в GitHub), который включает в себя набор экземпляров EC2 за ALB (без автомасштабирования, а скорее фиксированное количество экземпляров).
Я хочу создать одного слушателя для ALB, прослушивающего порт, отличный от порта по умолчанию (скажем, 9999), который использует HTTPS. Для этого ALB заставляет меня использовать сертификат SSL. Меня интересует только шифрование, а не проверка CA (потому что это предназначено для внутреннего трафика). Я бы хотел включить шифрование между клиентом и балансировщиком нагрузки, например: https://my-loadbalancer-1234567890.us-west-2.elb.amazonaws.com:9999
. Это api для отдыха, поэтому меня не волнует всплывающее окно браузера с жалобой на "Ваше соединение не защищено".
Я не могу полагаться на наличие домена, поскольку я хочу поделиться этим шаблоном, я не ожидаю, что каждый будет владеть доменом. Я могу придумать 3 решения, но мне не нравится ни одно из них (и я даже не знаю, будут ли они работать):
Создайте самоподписанный сертификат для сценария пользовательских данных. Отправьте этот сертификат в ACM. Затем используйте этот сертификат от ALB.
Обратная сторона: Это, вероятно, потребует вручную удалить сертификат, если стек будет уничтожен, поскольку сертификат был создан не из облачной информации, а из начальной загрузки ec2.
Создайте самоподписанный сертификат для сценария userdata, но вместо того, чтобы отправлять его в ACM, установите его на ec2 alb (используя что-то вроде haproxy / nginx).
Обратная сторона: Мы не пользуемся преимуществами aws alb.
Вариант 3 это только действительный. Попросите пользователя заранее создать домен Route53 и сертификат ACM и предоставить доменное имя и сертификат ARN как параметры для шаблона CloudFormation.
Обеспечить README.md
репозиторий GitHub с инструкциями о том, как это сделать. Сертификаты ACM бесплатны, поэтому нет причин их не использовать.
Надеюсь, это поможет :)