Для SaaS-приложения, в котором клиенты могут использовать свои собственные доменные имена, я буду использовать Let's Encrypt для генерации сертификатов для доменов клиентов.
В настоящее время я использую эластичный бобовый стебель (который использует ELB).
Могу ли я продолжать использовать Beanstalk?
Поскольку эластичный балансировщик нагрузки должен будет заниматься проверкой сертификатов, а мои сертификаты будут находиться на моих экземплярах, полагаю, мне придется как-то самостоятельно направлять трафик на мои экземпляры.
Есть ли какие-то обходные пути, которые стоило бы предпринять?
клиент -> экземпляр ec2, на котором запущен haproxy -> ELB -> Beanstalk
SSL будет завершен на моем экземпляре ec2, на котором запущен haproxy.
решение1
Здесь у вас есть несколько вариантов:
- Идите по указанному вами пути, завершайте SSL на кластере экземпляров HAProxy, прежде чем перенаправлять трафик через ELB на ваши экземпляры.
- Превратите свой ELB в TCP-пересылатель, что сделает ELB тупым перетасовщиком пакетов. Здесь вы потеряете некоторые преимущества ELB, но это будет работать. Вы будете завершать SSL на экземплярах, которые размещают ваше приложение в этом сценарии, поэтому в конфигурации балансировки нагрузки вам понадобятся копии сертификата на всех ваших экземплярах. Это может быть довольно сложно организовать, но осуществимо.
- (и мой предпочтительный вариант) используйте ALB. ALB поддерживают несколько сертификатов SSL и автоматически выбирают правильный сертификат, когда клиент указывает заголовок SNI. Вы сможете загрузить требуемые части сертификата (ключ, сертификат, посредник) в IAM и выбрать их в вашем ALB, все через API.
У ALB есть много других преимуществ, помимо SNI. Они поддерживают HTTP/2, маршрутизацию на основе пути к нескольким целевым группам (полезно в некоторых сценариях), и, насколько мне известно, они дешевле классических ELB.
И да, Elastic Beanstalk ПОДДЕРЖИВАЕТ ALB. К сожалению, вы можете а) выбрать его использование только во время создания среды, и б) сделать это только через новый пользовательский интерфейс. Я опубликовал нескольконареканияо UI и EB в целом, так как я действительно начал использовать его в течение последних нескольких недель. Надеюсь, они исправят эти проблемы в будущем. В то же время, вы должны, по крайней мере, иметь возможность сохранить конфигурацию вашей текущей среды, запустить новую из сохраненной конфигурации (изменяя тип балансировщика нагрузки перед созданием), а затем переключить CNAME, когда она будет запущена и запущена.
Также обратите внимание: для использования ALB ваша среда должна быть настроена на использование VPC.