AWS Elastic Beanstalk
개발자 가이드

HTTPS 종료를 위한 Elastic Beanstalk 환경 로드 밸런서 구성

HTTPS를 사용하도록 AWS Elastic Beanstalk 환경을 업데이트하려면 환경의 로드 밸런서에 대해 HTTPS 리스너를 구성해야 합니다. 두 가지 로드 밸런서 유형은 Classic Load Balancer 및 Application Load Balancer HTTPS 리스너를 지원합니다.

Elastic Beanstalk 콘솔나 구성 파일을 사용하여 보안 리스너를 구성하고 인증서를 할당할 수 있습니다.

참고

단일 인스턴스 환경에는 로드 밸런서가 없으며, 따라서 로드 밸런스에서 HTTPS 종료를 지원하지 않습니다.

Elastic Beanstalk 콘솔을 사용하여 보안 리스너 구성

환경의 로드 밸런서에 인증서를 할당

  1. Elastic Beanstalk 콘솔을 엽니다.

  2. 해당 환경의 관리 페이지로 이동합니다.

  3. [Configuration]을 선택합니다.

  4. 로드 밸런서 구성 카드에서 수정을 선택합니다.

    참고

    로드 밸런서 구성 카드에 수정 버튼이 없으면 환경에 로드 밸런서가 없는 것입니다.

  5. 로드 밸런서 수정 페이지의 절차는 환경과 연결된 로드 밸런서 유형에 따라 다릅니다.

    • Classic Load Balancer

      1. 리스너 추가를 선택합니다.

      2. Classic Load Balancer 리스너 대화 상자에서 다음 설정을 구성합니다.

        • 리스너 포트에서 수신 트래픽 포트(대체로 443)를 입력합니다.

        • 리스너 프로토콜에서 HTTPS를 선택합니다.

        • 인스턴스 포트에는 80을 입력합니다.

        • 인스턴스 프로토콜에서 HTTP를 선택합니다.

        • SSL 인증서에서 해당 인증서를 선택합니다.

      3. [추가]를 선택합니다.

    • Application Load Balancer

      1. 리스너 추가를 선택합니다.

      2. Application Load Balancer 리스너 대화 상자에서 다음 설정을 구성합니다.

        • 포트에서 수신 트래픽 포트(대체로 443)를 입력합니다.

        • 프로토콜에서 HTTPS를 선택합니다.

        • SSL 인증서에서 해당 인증서를 선택합니다.

      3. [추가]를 선택합니다.

      참고

      Classic Load Balancer와 Application Load Balancer의 경우, 드롭다운 메뉴에 표시되는 인증서가 없으면 AWS Certificate Manager(ACM)사용자 지정 도메인 이름에 대한 인증서 생성 또는 업로드가 필요합니다(권장). 또는 AWS CLI를 사용해 IAM으로 인증서를 업로드합니다.

    • Network Load Balancer

      1. 리스너 추가를 선택합니다.

      2. Network Load Balancer 리스너 대화 상자에서 포트에 대해 수신 트래픽 포트(대체로 443)를 입력합니다.

      3. [추가]를 선택합니다.

  6. 적용을 선택합니다.

구성 파일을 사용하여 보안 리스너 구성

다음과 같은 구성 파일 중 하나를 사용하여 로드 밸런서에서 보안 리스너를 구성할 수 있습니다.

예 .ebextensions/securelistener-clb.config

환경에 Classic Load Balancer가 있는 경우 이 예제를 사용합니다. 이 예제에서는 aws:elb:listener 네임스페이스의 옵션을 사용하여 지정된 인증서로 포트 443에서 HTTPS 리스너를 구성한 후, 포트 80에서 암호가 해독된 트래픽을 환경의 인스턴스로 전달합니다.

option_settings: aws:elb:listener:443: SSLCertificateId: arn:aws:acm:us-east-2:1234567890123:certificate/#################################### ListenerProtocol: HTTPS InstancePort: 80

강조 표시된 텍스트를 본인 인증서의 ARN으로 바꿉니다. 이 인증서는 AWS Certificate Manager(ACM)에서 만들어서 업로드한 것이거나(선호되는 방법) AWS CLI를 사용하여 IAM에 업로드한 것이 될 수 있습니다.

Classic Load Balancer 구성 옵션에 대한 자세한 내용은 Classic Load Balancer 구성 네임스페이스 단원을 참조하십시오.

예 .ebextensions/securelistener-alb.config

환경에 Application Load Balancer가 있는 경우 이 예제를 사용합니다. 이 예제에서는 aws:elbv2:listener 네임스페이스의 옵션을 사용하여 지정된 인증서로 포트 443의 HTTPS 리스너를 구성합니다. 이 리스너는 트래픽을 기본 프로세스로 라우팅합니다.

option_settings: aws:elbv2:listener:443: ListenerEnabled: 'true' Protocol: HTTPS SSLCertificateArns: arn:aws:acm:us-east-2:1234567890123:certificate/####################################

예 .ebextensions/securelistener-nlb.config

환경에 Network Load Balancer가 있는 경우 이 예제를 사용합니다. 예제에서는 aws:elbv2:listener 네임스페이스의 옵션을 사용하여 포트 443의 리스너를 구성합니다. 이 리스너는 트래픽을 기본 프로세스로 라우팅합니다.

option_settings: aws:elbv2:listener:443: ListenerEnabled: 'true'

보안 그룹 구성

포트 80 이외의 인스턴스 포트로 트래픽을 전달하도록 로드 밸런서를 구성하는 경우, 로드 밸런서에서 오는 인스턴스 포트를 통한 인바운드 트래픽을 허용하는 규칙을 보안 그룹에 추가해야 합니다. 사용자 지정 VPC에서 환경을 생성하는 경우 Elastic Beanstalk에서 이 규칙을 추가합니다.

애플리케이션용 .ebextensions 디렉터리의 구성 파일Resources 키를 추가하여 이 규칙을 추가합니다.

다음의 예제 구성 파일에서는 AWSEBSecurityGroup 보안 그룹에 수신 규칙을 추가합니다. 이렇게 하면 로드 밸런서의 보안 그룹에서 포트 1000의 트래픽이 허용됩니다.

예 .ebextensions/sg-ingressfromlb.config

Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 1000 FromPort: 1000 SourceSecurityGroupName: {"Fn::GetAtt" : ["AWSEBLoadBalancer" , "SourceSecurityGroup.GroupName"]}