Application Load Balancer용 HTTPS 리스너 생성 - Elastic Load Balancing

Application Load Balancer용 HTTPS 리스너 생성

리스너는 연결 요청을 확인하는 프로세스입니다. 로드 밸런서를 생성할 때 리스너를 정의하면 언제라도 로드 밸런서에 리스너를 추가할 수 있습니다.

암호화된 연결(SSL 오프로드라고도 함)을 사용하는 HTTPS 리스너를 생성할 수 있습니다. 이 기능을 사용하면 로드 밸런서와 SSL 또는 TLS 세션을 시작하는 클라이언트 간에 트래픽 암호화가 가능합니다.

암호화된 트래픽을 로드 밸런서의 해독 없이 대상으로 전달해야 하는 경우, 포트 443을 수신하는 TCP 리스너가 있는 Network Load Balancer 또는 Classic Load Balancer를 생성할 수 있습니다. TCP 리스너를 사용하여 로드 밸런서는 암호화된 트래픽을 해독하지 않고 대상으로 전달합니다.

Application Load Balancer는 mTLS(상호 TLS 인증)를 지원하지 않습니다. mTLS 지원의 경우 Network Load Balancer 또는 Classic Load Balancer를 사용하여 TCP 리스너를 생성하고 대상에 mTLS를 구현합니다.

이 페이지의 정보는 로드 밸런서용 HTTPS 리스너를 생성하는 데 도움이 됩니다. 로드 밸런서에 HTTP 리스너를 추가하려면 Application Load Balancer용 HTTP 리스너 생성 섹션을 참조하세요.

SSL 인증서

HTTPS 리스너를 사용하려면 로드 밸런서에 한 개 이상의 SSL/TLS 서버 인증서를 반드시 배포해야 합니다. 로드 밸런서는 서버 인증서를 사용해 프런트 엔드 연결을 종료한 다음, 대상으로 전송하기 전에 클라이언트의 요청을 해독합니다.

로드 밸런서에는 X.509 인증서(SSL/TLS 서버 인증서)가 필요합니다. 인증서는 인증 기관(CA)에서 발행한 디지털 형태의 ID 증명서입니다. 인증서에는 식별 정보, 유효 기간, 퍼블릭 키, 일련번호, 발행자의 디지털 서명이 들어 있습니다.

로드 밸런서와 함께 사용할 인증서를 생성할 때 도메인 이름을 지정해야 합니다.

AWS Certificate Manager(ACM)을 사용해 로드 밸런서를 위한 인증서를 생성하는 것이 좋습니다. ACM은 2048, 3072, 4096비트 길이의 RSA 인증서와 모든 ECDSA 인증서를 지원합니다. ACM은 Elastic Load Balancing과 통합하여 로드 밸런서에 인증서를 배포합니다. 자세한 내용은 AWS Certificate Manager 사용 설명서를 참조하십시오.

또는 SSL/TLS 도구를 사용해 인증서 서명 요청(CSR)을 생성하고 CA가 서명한 CSR을 가져와서 인증서를 만든 다음, ACM으로 인증서를 가져오거나 AWS Identity and Access Management(IAM)으로 인증서를 업로드할 수 있습니다. 인증서를 ACM으로 가져오는 방법에 대한 자세한 내용은 AWS Certificate Manager 사용 설명서인증서 가져오기 단원을 참조하세요. IAM으로 인증서를 업로드하는 방법에 대한 자세한 내용은 IAM 사용 설명서서버 인증서 작업을 참조하세요.

기본 인증서

HTTPS 리스너를 생성할 때 인증서 하나를 꼭 지정해야 합니다. 이 인증서를 기본 인증서라고 합니다. HTTPS 리스너를 생성한 후 기본 인증서를 교체할 수 있습니다. 자세한 내용은 기본 인증서 교체 단원을 참조하세요.

인증서 목록에서 추가 인증서를 지정하면 클라이언트가 SNI(서버 이름 표시) 프로토콜을 사용하지 않고 호스트 이름을 지정하여 연결하거나 인증서 목록에 일치하는 인증서가 없는 경우에만 기본 인증서가 사용됩니다.

추가 인증서를 지정하지 않지만 단일 로드 밸런서를 통해 보안 애플리케이션을 여러 개 호스팅해야 하는 경우, 와일드카드 인증서를 사용하거나 인증서에 각 추가 도메인의 주체 대체 이름(SAN)을 추가할 수 있습니다.

인증서 목록

HTTPS 리스너를 생성한 후 리스너에는 기본 인증서와 빈 인증서 목록이 있습니다. 필요에 따라 리스너의 인증서 목록에 인증서를 추가할 수 있습니다. 인증서 목록을 사용하면 로드 밸런서가 동일한 포트의 여러 도메인을 지원하고 각 도메인에 대해 다른 인증서를 제공할 수 있습니다. 자세한 내용은 인증서 목록에 인증서 추가 단원을 참조하세요.

로드 밸런서는 SNI를 지원하는 스마트 인증서 선택 알고리즘을 사용합니다. 클라이언트가 제공한 호스트 이름이 인증서 목록의 단일 인증서와 일치하면 로드 밸런서는 이 인증서를 선택합니다. 클라이언트가 제공한 호스트 이름이 인증서 목록의 여러 인증서와 일치하면 로드 밸런서는 클라이언트가 지원할 수 있는 최선의 인증서를 선택합니다. 인증서 선택은 다음 조건에 따라 다음 순서대로 이루어집니다.

  • 퍼블릭 키 알고리즘(RSA보다 ECDSA 선호)

  • 해싱 알고리즘(MD5보다 SHA 선호)

  • 키 길이(가장 큰 길이 선호)

  • 유효 기간

로드 밸런서 액세스 로그 항목은 클라이언트가 지정한 호스트 이름과 클라이언트에 제공된 인증서를 나타냅니다. 자세한 내용은 액세스 로그 항목 단원을 참조하세요.

인증서 갱신

각 인증서에는 유효 기간이 있습니다. 유효 기간이 끝나기 전에 로드 밸런서의 각 인증서를 갱신 또는 교체해야 합니다. 여기에는 기본 인증서와 인증서 목록의 인증서가 포함됩니다. 인증서를 갱신 또는 교체해도 로드 밸런서 노드에 수신되어 상태가 양호한 대상으로 라우팅이 보류 중인 진행 중 요청에는 영향을 주지 않습니다. 인증서를 갱신하면 새 요청에서 갱신된 인증서를 사용합니다. 인증서를 교체하면 새 요청에서 새 인증서를 사용합니다.

인증서 갱신 및 교체를 다음과 같이 관리할 수 있습니다.

  • AWS Certificate Manager가 제공하고 로드 밸런서에 배포된 인증서는 자동으로 갱신이 가능합니다. ACM은 인증서가 만료되기 전에 갱신을 시도합니다. 자세한 내용은 AWS Certificate Manager 사용 설명서에서 관리형 갱신을 참조하세요.

  • ACM에 인증서를 가져온 경우에는 인증서의 만료일을 반드시 모니터링해서 만료되기 전에 인증서를 갱신해야 합니다. 자세한 내용은 AWS Certificate Manager 사용 설명서에서 인증서 가져오기를 참조하세요.

  • IAM으로 인증서를 가져온 경우, 새 인증서를 만들어 ACM이나 IAM으로 가져온 후 로드 밸런서에 새 인증서를 추가하고, 만료된 인증서를 로드 밸런서에서 제거해야 합니다.

보안 정책

Elastic Load Balancing은 보안 정책이라고 하는 Secure Socket Layer(SSL) 협상 구성을 사용해 클라이언트와 로드 밸런서 간의 연결을 협상합니다. 보안 정책은 프로토콜과 암호의 조합입니다. 프로토콜은 클라이언트와 서버 간에 보안 연결을 설정하여 클라이언트와 로드 밸런서 간에 전달되는 모든 데이터를 안전하게 보호합니다. 암호는 코딩된 메시지를 생성하기 위해 암호화 키를 사용하는 암호화 알고리즘입니다. 프로토콜은 여러 개의 암호를 사용해 인터넷 상의 데이터를 암호화합니다. 연결 협상이 이루어지는 동안 클라이언트와 로드 밸런서는 각각이 지원하는 암호 및 프로토콜 목록을 선호도 순으로 표시합니다. 기본적으로 서버의 목록에서 클라이언트의 암호 중 하나와 일치하는 첫 번째 암호가 보안 연결을 위해 선택됩니다.

Application Load Balancer는 클라이언트 또는 대상 연결에 대한 SSL 재협상을 지원하지 않습니다.

HTTPS 리스너를 생성할 때 보안 정책을 선택해야 합니다. 필요에 따라 보안 정책을 업데이트할 수 있습니다. 자세한 내용은 보안 정책 업데이트 단원을 참조하세요.

프런트 엔드 연결에서 사용되는 보안 정책을 선택할 수 있습니다. ELBSecurityPolicy-2016-08 보안 정책은 항상 백 엔드 연결에 사용됩니다. Application Load Balancer는 사용자 지정 보안 정책을 지원하지 않습니다.

Elastic Load Balancing은 Application Load Balancer에 대해 다음과 같은 보안 정책을 제공합니다.

  • ELBSecurityPolicy-2016-08 (default)

  • ELBSecurityPolicy-TLS-1-0-2015-04

  • ELBSecurityPolicy-TLS-1-1-2017-01

  • ELBSecurityPolicy-TLS-1-2-2017-01

  • ELBSecurityPolicy-TLS-1-2-Ext-2018-06

  • ELBSecurityPolicy-FS-2018-06

  • ELBSecurityPolicy-FS-1-1-2019-08

  • ELBSecurityPolicy-FS-1-2-2019-08

  • ELBSecurityPolicy-FS-1-2-Res-2019-08

  • ELBSecurityPolicy-2015-05(과 동일)ELBSecurityPolicy-2016-08

  • ELBSecurityPolicy-FS-1-2-Res-2020-10

호환성을 위해 ELBSecurityPolicy-2016-08 정책을 사용하는 것이 좋습니다. FS(Forward Secrecy)가 필요한 경우 ELBSecurityPolicy-FS 정책 중 하나를 사용할 수 있습니다. ELBSecurityPolicy-TLS 정책 중 하나를 사용하여 특정한 TLS 프로토콜 버전을 비활성화해야 하는 규정 준수 및 보안 표준을 충족하거나 암호 사용 중지가 필요한 기존 클라이언트를 지원할 수 있습니다. 인터넷 클라이언트만 TLS 버전 1.0이 필요한 인터넷 클라이언트 비율은 적습니다. 로드 밸런서에 대한 요청에서 TLS 프로토콜 버전을 확인하려면 로드 밸런서에서 액세스 로깅을 활성화하고 액세스 로그를 검사하세요. 자세한 내용은 액세스 로그를 참조하세요.

FS 지원 정책

다음 표에서는 기본 정책, ELBSecurityPolicy-2016-08ELBSecurityPolicy-FS 정책에 대해 설명합니다. ELBSecurityPolicy-가 제목 행의 정책 이름에서 제거되어 해당 위치에 맞게 조정되었습니다.

보안 정책 
                                            ELBSecurityPolicy-2016-08
                                        
                                            ELBSecurityPolicy-FS-1-2-Res-2020-10
                                        
                                            ELBSecurityPolicy-FS-1-2-Res-2019-08
                                        
                                            ELBSecurityPolicy-FS-1-2-2019-08
                                        
                                            ELBSecurityPolicy-FS-1-1-2019-08
                                        
                                            ELBSecurityPolicy-FS-2018-06
TLS 프로토콜

Protocol-TLSv1

Protocol-TLSv1.1

Protocol-TLSv1.2

TLS 암호

ECDHE-ECDSA-AES128-GCM-SHA256

ECDHE-RSA-AES128-GCM-SHA256

ECDHE-ECDSA-AES128-SHA256

ECDHE-RSA-AES128-SHA256

ECDHE-ECDSA-AES128-SHA

ECDHE-RSA-AES128-SHA

ECDHE-ECDSA-AES256-GCM-SHA384

ECDHE-RSA-AES256-GCM-SHA384

ECDHE-ECDSA-AES256-SHA384

ECDHE-RSA-AES256-SHA384

ECDHE-RSA-AES256-SHA

ECDHE-ECDSA-AES256-SHA

AES128-GCM-SHA256

AES128-SHA256

AES128-SHA

AES256-GCM-SHA384

AES256-SHA256

AES256-SHA

TLS 보안 정책

다음 표에서는 기본 정책, ELBSecurityPolicy-2016-08ELBSecurityPolicy-TLS 정책에 대해 설명합니다. ELBSecurityPolicy-가 제목 행의 정책 이름에서 제거되어 해당 위치에 맞게 조정되었습니다.

보안 정책 
                                            ELBSecurityPolicy-2016-08
                                        
                                            ELBSecurityPolicy-TLS-1-2-Ext-2018-06
                                        
                                            ELBSecurityPolicy-TLS-1-2-2017-01
                                        
                                            ELBSecurityPolicy-TSL-1-1-2017-01
                                        
                                            ELBSecurityPolicy-TLS-1-0-2015-04
TLS 프로토콜

Protocol-TLSv1

Protocol-TLSv1.1

Protocol-TLSv1.2

TLS 암호

ECDHE-ECDSA-AES128-GCM-SHA256

ECDHE-RSA-AES128-GCM-SHA256

ECDHE-ECDSA-AES128-SHA256

ECDHE-RSA-AES128-SHA256

ECDHE-ECDSA-AES128-SHA

ECDHE-RSA-AES128-SHA

ECDHE-ECDSA-AES256-GCM-SHA384

ECDHE-RSA-AES256-GCM-SHA384

ECDHE-ECDSA-AES256-SHA384

ECDHE-RSA-AES256-SHA384

ECDHE-RSA-AES256-SHA

ECDHE-ECDSA-AES256-SHA

AES128-GCM-SHA256

AES128-SHA256

AES128-SHA

AES256-GCM-SHA384

AES256-SHA256

AES256-SHA

DES-CBC3-SHA

* 보안이 약한 DES-CBC3-SHA 암호를 필요로 하는 기존 클라이언트를 지원해야 하는 경우 외에는 한 이 정책을 사용하지 마세요.

AWS CLI를 사용하여 Application Load Balancer에 대한 보안 정책 구성을 보려면 describe-ssl-policies 명령을 사용하세요.

HTTPS 리스너 추가

리스너에서 클라이언트에서 로드 밸런서로의 연결을 위한 프로토콜 및 포트 번호와 기본 리스너 규칙에 대한 대상 그룹을 구성합니다. 자세한 정보는 리스너 구성을 참조하십시오.

사전 조건

  • HTTPS 리스너를 생성하려면 인증서와 보안 정책을 지정해야 합니다. 로드 밸런서는 이 인증서를 사용해 연결을 종료하고 대상으로 전송하기 전에 클라이언트의 요청을 해독합니다. 로드 밸런서는 클라이언트와 SSL 연결을 협상할 때 보안 정책을 사용합니다.

  • 기본 리스너 규칙에 전달 작업을 추가하려면 사용 가능한 대상 그룹을 지정해야 합니다. 자세한 정보는 대상 그룹 생성을 참조하십시오.

  • 여러 리스너에서 동일한 대상 그룹을 지정할 수 있지만, 이러한 리스너는 동일한 로드 밸런서에 속해야 합니다. 대상 그룹을 로드 밸런서와 함께 사용하려면 대상 그룹이 다른 로드 밸런서용으로 리스너에서 사용되고 있지 않은지 확인해야 합니다.

콘솔을 사용하여 HTTPS 리스너를 추가하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창의 [LOAD BALANCING] 아래에서 [Load Balancers]를 선택합니다.

  3. 로드 밸런서를 선택한 후 [Listeners], [Add listener]를 선택합니다.

  4. 프로토콜 : 포트에서 HTTPS를 선택하고 기본 포트를 유지하거나 다른 포트를 입력합니다.

  5. (선택 사항) 사용자를 인증하려면 Default actions(기본 작업)에서 Add action(작업 추가), Authenticate(인증)를 선택하고 요청된 정보를 제공합니다. 작업을 저장하려면 확인 표시 아이콘을 선택합니다. 자세한 내용은 Application Load Balancer를 사용하여 사용자 인증 단원을 참조하세요.

  6. 기본 작업에서 다음 중 하나를 수행합니다.

    • 작업 추가, 전달 대상을 선택하고 대상 그룹을 선택합니다.

    • 작업 추가, 다음으로 리디렉션을 선택하고 리디렉션 URL을 입력하세요. 자세한 내용은 리디렉션 작업 단원을 참조하세요.

    • 작업 추가, 고정 응답 반환을 선택하고 응답 코드와 응답 본문(선택 사항)을 입력하세요. 자세한 내용은 고정 응답 작업 단원을 참조하세요.

    작업을 저장하려면 확인 표시 아이콘을 선택합니다.

  7. [Security policy]에서 기본 보안 정책을 유지하는 것이 좋습니다.

  8. Default SSL certificate(기본 SSL 인증서)에 대해 다음 중 하나를 수행합니다.

    • AWS Certificate Manager을 사용하여 인증서를 생성하거나 가져온 경우 ACM에서 시작을 선택하고 인증서를 선택하세요.

    • IAM을 사용하여 인증서를 업로드한 경우 [IAM에서(From IAM)]을 선택하고 인증서를 선택합니다.

  9. Save를 선택합니다.

  10. (선택 사항) 경로 패턴이나 호스트 이름을 기반으로 요청을 전달하는 추가 리스너 규칙을 정의하려면 규칙 추가 단원을 참조하세요.

  11. (선택 사항) SNI 프로토콜에 사용할 인증서 목록을 추가하려면 인증서 목록에 인증서 추가 섹션을 참조하세요.

AWS CLI를 사용하여 HTTPS 리스너를 추가하려면

리스너 및 기본 규칙을 생성하려면 create-listener 명령을, 추가 리스너 규칙을 정의하려면 create-rule 명령을 사용하세요.

HTTPS 리스너 업데이트

HTTPS 리스너를 생성한 후 기본 인증서를 교체하거나, 인증서 목록을 업데이트하거나, 보안 정책을 교체할 수 있습니다. 자세한 내용은 Application Load Balancer용 HTTPS 리스너 업데이트 단원을 참조하세요.