고객이 자신의 사용자 지정 도메인 이름을 사용할 수 있는 SaaS 애플리케이션의 경우 Let Encrypt를 사용하여 고객 도메인에 대한 인증서를 생성할 것입니다.
현재 ELB를 사용하는 Elastic Beanstalk를 사용하고 있습니다.
콩나무를 계속해서 사용할 수 있나요?
탄력적 로드 밸런서는 인증서 확인을 처리해야 하고 내 인증서는 내 인스턴스에 있을 것이므로 어떻게든 내 인스턴스로 트래픽을 직접 라우팅해야 할 것 같습니다.
가치 있는 해결 방법이 있습니까? 이 작업을 수행할 수 있습니까?
고객 -> haproxy를 실행하는 EC2 인스턴스 -> ELB -> Beanstalk
haproxy를 실행하는 ec2 인스턴스에서 SSL이 종료됩니다.
답변1
여기에는 몇 가지 옵션이 있습니다.
- 언급한 경로로 이동하여 ELB를 통해 인스턴스로 트래픽을 전달하기 전에 HAProxy 인스턴스 클러스터에서 SSL을 종료하세요.
- ELB를 TCP 전달자로 전환하면 ELB를 멍청한 패킷 셔플러로 만들 수 있습니다. 여기서 ELB의 일부 이점을 잃게 되지만 이는 효과가 있을 것입니다. 이 시나리오에서는 애플리케이션을 호스팅하는 인스턴스에서 SSL을 종료하므로 부하 분산 구성에서는 모든 인스턴스에 인증서 복사본이 필요합니다. 조율하기가 상당히 까다로울 수 있지만 실행 가능합니다.
- (그리고 내가 선호하는 옵션) ALB를 사용합니다. ALB는 여러 SSL 인증서를 지원하며 클라이언트가 SNI 헤더를 나타낼 때 자동으로 올바른 인증서를 선택합니다. API를 통해 필요한 인증서 부분(키, 인증서, 중개자)을 IAM에 업로드하고 ALB 내에서 선택할 수 있습니다.
ALB에는 SNI보다 많은 장점이 있습니다. HTTP/2, 여러 대상 그룹에 대한 경로 기반 라우팅(일부 시나리오에서 유용함)을 지원하며 제가 아는 한 클래식 ELB보다 저렴합니다.
그리고 그렇습니다. Elastic Beanstalk는 ALB를 지원합니다. 안타깝게도 a) 환경 생성 시에만 사용하도록 선택하고 b) 새 UI를 통해서만 이 작업을 수행할 수 있습니다. 제가 좀 포스팅했어요불만UI와 EB 전반이 지난 몇 주 동안 실제로 사용하게 되었다는 이야기입니다. 앞으로 이러한 문제가 해결되기를 바랍니다. 그 동안에는 적어도 현재 환경의 구성을 저장하고 저장된 구성에서 새 구성을 시작한 다음(생성 전에 로드 밸런서 유형 변경) CNAME이 실행되면 전환할 수 있어야 합니다.
참고: ALB를 사용하려면 VPC를 사용하도록 환경을 구성해야 합니다.