Application Load Balancer의 TLS를 사용한 상호 인증 - Elastic Load Balancing

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Application Load Balancer의 TLS를 사용한 상호 인증

상호 TLS 인증은 전송 계층 보안 (TLS) 의 변형입니다. 기존 TLS는 서버와 클라이언트 간에 보안 통신을 설정하며, 이 경우 서버는 클라이언트에 ID를 제공해야 합니다. 상호 TLS를 사용하는 경우 부하 분산기는 TLS를 협상하면서 클라이언트와 서버 간의 상호 인증을 협상합니다. Application Load Balancer와 함께 상호 TLS를 사용하면 인증 관리를 단순화하고 애플리케이션의 부하를 줄일 수 있습니다.

Application Load Balancer와 상호 TLS를 사용하면 로드 밸런서가 클라이언트 인증을 관리하여 신뢰할 수 있는 클라이언트만 백엔드 애플리케이션과 통신하도록 할 수 있습니다. 이 기능을 사용하면 Application Load Balancer는 타사 인증 기관 (CA) 의 인증서를 사용하거나 AWS Private Certificate Authority (PCA) 를 사용하여 선택적으로 해지 검사를 통해 클라이언트를 인증합니다. Application Load Balancer는 클라이언트 인증서 정보를 백엔드로 전달하여 애플리케이션이 권한 부여에 사용할 수 있습니다. Application Load Balancer에서 상호 TLS를 사용하면 기존 라이브러리를 사용하는 인증서 기반 엔티티에 대해 확장 가능한 내장된 관리형 인증을 얻을 수 있습니다.

애플리케이션 로드 밸런서용 상호 TLS는 X.509v3 클라이언트 인증서를 검증하기 위한 다음 두 가지 옵션을 제공합니다.

참고: X.509v1 클라이언트 인증서는 지원되지 않습니다.

  • 상호 TLS 패스스루: 상호 TLS 패스스루 모드를 사용하는 경우 Application Load Balancer는 HTTP 헤더를 사용하여 전체 클라이언트 인증서 체인을 대상으로 보냅니다. 그런 다음 클라이언트 인증서 체인을 사용하여 애플리케이션에 해당 인증 및 권한 부여 로직을 구현할 수 있습니다.

  • 상호 TLS 확인: 상호 TLS 확인 모드를 사용하는 경우 Application Load Balancer는 로드 밸런서가 TLS 연결을 협상할 때 클라이언트에 대해 X.509 클라이언트 인증서 인증을 수행합니다.

패스스루를 사용하여 Application Load Balancer에서 상호 TLS를 시작하려면 클라이언트의 인증서를 수락하도록 리스너를 구성하기만 하면 됩니다. 상호 TLS를 검증과 함께 사용하려면 다음을 수행해야 합니다.

  • 새 신뢰 저장소 리소스를 생성합니다.

  • CA (인증 기관) 번들과 선택적으로 취소 목록을 업로드합니다.

  • 클라이언트 인증서를 확인하도록 구성된 리스너에 신뢰 저장소를 연결합니다.

Application Load Balancer를 사용하여 상호 TLS 검증 모드를 구성하는 step-by-step 절차는 을 참조하십시오. 애플리케이션 로드 밸런서에서 상호 TLS 구성

애플리케이션 로드 밸런서에서 상호 TLS를 구성하기 전에

Application Load Balancer에서 상호 TLS를 구성하기 전에 다음 사항에 유의하십시오.

할당량

애플리케이션 로드 밸런서에는 계정 내에서 사용 중인 신뢰 저장소, CA 인증서 및 인증서 취소 목록의 양과 관련된 특정 제한이 포함됩니다. AWS

자세한 내용은 애플리케이션 로드 밸런서의 할당량을 참조하십시오.

인증서 요구 사항

애플리케이션 로드 밸런서는 상호 TLS 인증에 사용되는 인증서에 대해 다음을 지원합니다.

  • 지원되는 인증서: X.509v3

  • 지원되는 공개 키: RSA 2K — 8K 또는 ECDSA secp256r1, secp384r1, secp521r1

  • 지원되는 서명 알고리즘: RSA/SHA256, 384, 512 (EC/SHA256,384,512 해시 포함), 384, 512 (EC/SHA256,384,512 해시 포함) (MGF1 기반 RSASA-PSS 포함) SHA256

CA 인증서 번들

다음은 인증 기관 (CA) 번들에 적용됩니다.

  • 애플리케이션 로드 밸런서는 각 CA (인증 기관) 인증서 번들을 일괄적으로 업로드합니다. 애플리케이션 로드 밸런서는 개별 인증서 업로드를 지원하지 않습니다. 새 인증서를 추가해야 하는 경우 인증서 번들 파일을 업로드해야 합니다.

  • CA 인증서 번들을 교체하려면 ModifyTrustStoreAPI를 사용하십시오.

패스스루를 위한 인증서 주문

상호 TLS 패스스루를 사용하는 경우 Application Load Balancer는 헤더를 삽입하여 클라이언트의 인증서 체인을 백엔드 대상에 제공합니다. 표시 순서는 리프 인증서에서 시작하여 루트 인증서로 끝납니다.

세션 재개

Application Load Balancer에서 상호 TLS 패스스루 또는 검증 모드를 사용하는 동안에는 세션 재개가 지원되지 않습니다.

HTTP 헤더

애플리케이션 로드 밸런서는 상호 TLS를 사용하여 X-Amzn-Mtls 클라이언트 연결을 협상할 때 헤더를 사용하여 인증서 정보를 전송합니다. 자세한 내용 및 예제 헤더는 을 참조하십시오. HTTP 헤더 및 상호 TLS

CA 인증서 파일

CA 인증서 파일은 다음 요구 사항을 충족해야 합니다.

  • 인증서 파일은 PEM (프라이버시 강화 메일) 형식을 사용해야 합니다.

  • 인증서 내용은 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 경계 내에 포함되어야 합니다.

  • 설명 앞에는 # 문자가 있어야 하며 어떤 - 문자도 포함해서는 안 됩니다.

  • 빈 줄은 사용할 수 없습니다.

승인되지 않은 인증서 예 (유효하지 않음):

# comments Certificate: Data: Version: 3 (0x2) Serial Number: 01 Signature Algorithm: ecdsa-with-SHA384 Issuer: C=US, O=EXAMPLE, OU=EXAMPLE, CN=EXAMPLE Validity Not Before: Jan 11 23:57:57 2024 GMT Not After : Jan 10 00:57:57 2029 GMT Subject: C=US, O=EXAMPLE, OU=EXAMPLE, CN=EXAMPLE Subject Public Key Info: Public Key Algorithm: id-ecPublicKey Public-Key: (384 bit) pub: 00:01:02:03:04:05:06:07:08 ASN1 OID: secp384r1 NIST CURVE: P-384 X509v3 extensions: X509v3 Key Usage: critical Digital Signature, Key Encipherment, Certificate Sign, CRL Sign X509v3 Basic Constraints: critical CA:TRUE X509v3 Subject Key Identifier: 00:01:02:03:04:05:06:07:08 X509v3 Subject Alternative Name: URI:EXAMPLE.COM Signature Algorithm: ecdsa-with-SHA384 00:01:02:03:04:05:06:07:08 -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----

승인된 (유효한) 인증서의 예:

  1. 단일 인증서 (PEM 인코딩):

    # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----
  2. 여러 인증서 (PEM 인코딩):

    # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----

HTTP 헤더 및 상호 TLS

이 섹션에서는 애플리케이션 로드 밸런서가 상호 TLS를 사용하여 클라이언트와 연결을 협상할 때 인증서 정보를 전송하는 데 사용하는 HTTP 헤더에 대해 설명합니다. Application Load Balancer에서 사용하는 특정 X-Amzn-Mtls 헤더는 지정한 상호 TLS 모드 (패스스루 모드 또는 검증 모드) 에 따라 달라집니다.

애플리케이션 로드 밸런서에서 지원하는 다른 HTTP 헤더에 대한 자세한 내용은 을 참조하십시오. HTTP 헤더 및 Application Load Balancer

패스스루 모드의 HTTP 헤더

패스스루 모드의 상호 TLS의 경우 애플리케이션 로드 밸런서는 다음 헤더를 사용합니다.

이 헤더에는 연결에 표시된 전체 클라이언트 인증서 체인의 URL로 인코딩된 PEM 형식이 안전한 문자로 포함되어 있습니다. +=/

헤더 내용 예시:

X-Amzn-Mtls-Clientcert: -----BEGIN%20CERTIFICATE-----%0AMIID<...reduced...>do0g%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIID1<...reduced...>3eZlyKA%3D%3D%0A-----END%20CERTIFICATE-----%0A

검증 모드의 HTTP 헤더

검증 모드의 상호 TLS의 경우 애플리케이션 로드 밸런서는 다음 헤더를 사용합니다.

이 헤더에는 리프 인증서 일련 번호를 16진수로 표현한 내용이 들어 있습니다.

예제 헤더 내용:

X-Amzn-Mtls-Clientcert-Serial-Number: 03A5B1

이 헤더에는 발급자의 고유 이름 (DN) 을 나타내는 RFC2253 문자열이 포함되어 있습니다.

헤더 콘텐츠 예시:

X-Amzn-Mtls-Clientcert-Issuer: CN=rootcamtls.com,OU=rootCA,O=mTLS,L=Seattle,ST=Washington,C=US

이 헤더에는 주체의 고유 이름 (DN) 을 나타내는 RFC2253 문자열이 포함되어 있습니다.

헤더 콘텐츠 예시:

X-Amzn-Mtls-Clientcert-Subject: CN=client_.com,OU=client-3,O=mTLS,ST=Washington,C=US

이 헤더에는 ISO8601 형식의 종료 날짜가 포함되어 있습니다. notBefore notAfter

헤더 콘텐츠 예시:

X-Amzn-Mtls-Clientcert-Validity: NotBefore=2023-09-21T01:50:17Z;NotAfter=2024-09-20T01:50:17Z

이 헤더에는 안전한 문자로 표시된 리프 인증서의 URL로 인코딩된 PEM 형식이 들어 있습니다. +=/

헤더 콘텐츠 예시:

X-Amzn-Mtls-Clientcert-Leaf: -----BEGIN%20CERTIFICATE-----%0AMIIG<...reduced...>NmrUlw%0A-----END%20CERTIFICATE-----%0A

애플리케이션 로드 밸런서에서 상호 TLS 구성

이 섹션에는 애플리케이션 로드 밸런서의 인증을 위한 상호 TLS 검증 모드를 구성하는 절차가 포함되어 있습니다.

상호 TLS 패스스루 모드를 사용하려면 클라이언트의 인증서를 수락하도록 리스너를 구성하기만 하면 됩니다. 상호 TLS 패스스루를 사용하는 경우 Application Load Balancer는 HTTP 헤더를 사용하여 전체 클라이언트 인증서 체인을 대상으로 전송하며, 이를 통해 애플리케이션에서 해당 인증 및 권한 부여 로직을 구현할 수 있습니다. 자세한 내용은 Application Load Balancer에 대한 HTTPS 리스너 생성을 참조하세요.

검증 모드에서 상호 TLS를 사용하는 경우, Application Load Balancer는 로드 밸런서가 TLS 연결을 협상할 때 클라이언트에 대해 X.509 클라이언트 인증서 인증을 수행합니다.

상호 TLS 검증 모드를 활용하려면 다음을 수행하십시오.

  • 새 신뢰 저장소 리소스를 생성합니다.

  • CA (인증 기관) 번들과 선택적으로 취소 목록을 업로드합니다.

  • 클라이언트 인증서를 확인하도록 구성된 리스너에 신뢰 저장소를 연결합니다.

이 섹션의 절차에 따라 에서 Application Load Balancer의 상호 TLS 확인 모드를 구성하십시오. AWS Management Console콘솔 대신 API 작업을 사용하여 상호 TLS를 구성하려면 Application Load Balancer API 참조 안내서를 참조하십시오.

신뢰 저장소 생성

신뢰 저장소를 만들 수 있는 세 가지 방법이 있습니다. 하나는 Application Load Balancer를 만드는 경우이고, 다른 하나는 보안 수신기를 만드는 경우이고, 다른 하나는 신뢰 저장소 콘솔을 사용하는 것입니다. 로드 밸런서 또는 리스너를 만들 때 신뢰 저장소를 추가하면 신뢰 저장소가 새 수신기와 자동으로 연결됩니다. 신뢰 저장소 콘솔을 사용하여 신뢰 저장소를 만들 때는 신뢰 저장소를 리스너와 직접 연결해야 합니다.

이 섹션에서는 신뢰 저장소 콘솔을 사용하여 신뢰 저장소를 만드는 방법을 설명하지만 Application Load Balancer 또는 리스너를 만드는 동안 사용되는 단계는 동일합니다. 자세한 내용은 로드 밸런서 및 리스너 구성 및 HTTPS 수신기 추가를 참조하십시오.

사전 조건:
  • 신뢰 저장소를 만들려면 인증 기관 (CA) 의 인증서 번들이 있어야 합니다.

콘솔을 사용하여 신뢰 저장소를 만들려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 트러스트 스토어를 선택합니다.

  3. 신뢰 저장소 생성을 선택합니다.

  4. 트러스트 스토어 구성

    1. 트러스트 스토어 이름에 트러스트 스토어 이름을 입력합니다.

    2. 인증 기관 번들의 경우 신뢰 저장소에서 사용할 ca 인증서 번들의 Amazon S3 경로를 입력합니다.

      선택 사항: 객체 버전을 사용하여 ca 인증서 번들의 이전 버전을 선택합니다. 그렇지 않으면 현재 버전이 사용됩니다.

  5. 해지의 경우 선택적으로 인증서 취소 목록을 신뢰 저장소에 추가할 수 있습니다.

    1. 인증서 취소 목록에서 신뢰 저장소에서 사용할 인증서 취소 목록의 Amazon S3 경로를 입력합니다.

      선택 사항: 객체 버전을 사용하여 인증서 취소 목록의 이전 버전을 선택합니다. 그렇지 않으면 현재 버전이 사용됩니다.

  6. 트러스트 스토어 태그의 경우 선택적으로 최대 50개의 태그를 입력하여 트러스트 스토어에 적용할 수 있습니다.

  7. 신뢰 저장소 생성을 선택합니다.

트러스트 스토어 연결

신뢰 저장소를 생성한 후에는 이를 리스너에 연결해야 Application Load Balancer가 신뢰 저장소를 사용하기 시작할 수 있습니다. 각 보안 리스너에는 하나의 신뢰 저장소만 연결할 수 있지만 신뢰 저장소는 여러 리스너에 연결할 수 있습니다.

이 섹션에서는 신뢰 저장소를 기존 리스너에 연결하는 방법을 다룹니다. 또는 Application Load Balancer 또는 리스너를 생성하는 동안 신뢰 저장소를 연결할 수 있습니다. 자세한 내용은 로드 밸런서 및 리스너 구성 및 HTTPS 수신기 추가를 참조하십시오.

콘솔을 사용하여 신뢰 저장소를 연결하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 로드 밸런서를 선택합니다.

  3. 로드 밸런서의 세부 정보 페이지를 보려면 로드 밸런서를 선택합니다.

  4. 리스너 및 규칙 탭에서 프로토콜:포트 열의 링크를 선택하여 보안 리스너의 세부 정보 페이지를 엽니다.

  5. 보안 탭에서 보안 수신기 설정 편집을 선택합니다.

  6. (선택 사항) 상호 TLS가 활성화되지 않은 경우 클라이언트 인증서 처리에서 상호 인증 (MTL) 을 선택한 다음 신뢰 저장소를 통한 확인을 선택합니다.

  7. 신뢰 저장소에서 만든 신뢰 저장소를 선택합니다.

  8. 변경 사항 저장을 선택합니다.

트러스트 스토어 세부 정보 보기

CA 인증서 번들

CA 인증서 번들은 신뢰 저장소의 필수 구성 요소입니다. 인증 기관의 검증을 거친 신뢰할 수 있는 루트 및 중간 인증서 모음입니다. 이렇게 검증된 인증서를 통해 클라이언트는 제시되는 인증서가 로드 밸런서의 소유임을 신뢰할 수 있습니다.

언제든지 신뢰 저장소에서 현재 CA 인증서 번들의 콘텐츠를 볼 수 있습니다.

CA 인증서 번들 보기
콘솔을 사용하여 CA 인증서 번들을 보려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 신뢰 저장소를 선택합니다.

  3. 세부 정보 페이지를 보려면 신뢰 저장소를 선택합니다.

  4. 작업을 선택한 다음 CA 번들 가져오기를 선택합니다.

  5. 공유 링크 또는 다운로드를 선택합니다.

인증서 취소 목록

선택적으로 신뢰 저장소의 인증서 취소 목록을 만들 수 있습니다. 취소 목록은 인증 기관에서 공개하며 해지된 인증서에 대한 데이터를 포함합니다. 애플리케이션 로드 밸런서는 PEM 형식의 인증서 취소 목록만 지원합니다.

인증서 취소 목록이 신뢰 저장소에 추가되면 해지 ID가 부여됩니다. 해지 ID는 신뢰 저장소에 추가되는 모든 취소 목록마다 증가하며 변경할 수 없습니다. 인증서 취소 목록이 신뢰 저장소에서 삭제되면 해당 해지 ID도 삭제되며 신뢰 저장소의 수명 기간 동안 재사용되지 않습니다.

참고

애플리케이션 로드 밸런서는 인증서 취소 목록 내에서 일련 번호가 음수인 인증서를 해지할 수 없습니다.

인증서 취소 목록 보기
콘솔을 사용하여 해지 목록을 보려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 신뢰 저장소를 선택합니다.

  3. 세부 정보 페이지를 보려면 신뢰 저장소를 선택합니다.

  4. 인증서 취소 목록 탭에서 작업을 선택한 다음 취소 목록 가져오기를 선택합니다.

  5. 공유 링크 또는 다운로드를 선택합니다.

트러스트 스토어 수정

신뢰 저장소에는 한 번에 하나의 CA 인증서 번들만 포함할 수 있지만, 신뢰 저장소가 생성된 후에는 언제든지 CA 인증서 번들을 교체할 수 있습니다.

CA 인증서 번들 교체

콘솔을 사용하여 CA 인증서 번들 교체하기
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 신뢰 저장소를 선택합니다.

  3. 세부 정보 페이지를 보려면 신뢰 저장소를 선택합니다.

  4. 작업을 선택한 다음 CA 번들 교체를 선택합니다.

  5. CA 번들 교체 페이지의 인증 기관 번들 아래에 원하는 CA 번들의 Amazon S3 위치를 입력합니다.

  6. (선택 사항) 객체 버전을 사용하여 인증서 취소 목록의 이전 버전을 선택합니다. 그렇지 않으면 현재 버전이 사용됩니다.

  7. CA 번들 교체를 선택합니다.

인증서 취소 목록 추가

콘솔을 사용하여 해지 목록을 추가하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 신뢰 저장소를 선택합니다.

  3. 신뢰 저장소를 선택하면 세부 정보 페이지를 볼 수 있습니다.

  4. 인증서 취소 목록 탭에서 작업을 선택한 다음 취소 목록 추가를 선택합니다.

  5. 취소 목록 추가 페이지의 인증서 취소 목록에 원하는 인증서 취소 목록의 Amazon S3 위치를 입력합니다.

  6. (선택 사항) 객체 버전을 사용하여 인증서 취소 목록의 이전 버전을 선택합니다. 그렇지 않으면 현재 버전이 사용됩니다.

  7. 해지 목록 추가를 선택합니다.

인증서 취소 목록 삭제

콘솔을 사용하여 취소 목록을 삭제하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 신뢰 저장소를 선택합니다.

  3. 세부 정보 페이지를 보려면 신뢰 저장소를 선택합니다.

  4. 인증서 취소 목록 탭에서 작업, 취소 목록 삭제를 차례로 선택합니다.

  5. 를 입력하여 삭제를 확인합니다. confirm

  6. 삭제를 선택합니다.

트러스트 스토어 삭제

더 이상 트러스트 스토어를 사용할 수 없게 되면 트러스트 스토어를 삭제할 수 있습니다.

참고: 현재 리스너와 연결된 신뢰 저장소는 삭제할 수 없습니다.

콘솔을 사용하여 신뢰 저장소를 삭제하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 트러스트 스토어를 선택합니다.

  3. 신뢰 저장소를 선택하면 세부 정보 페이지를 볼 수 있습니다.

  4. 작업을 선택한 다음 신뢰 저장소 삭제를 선택합니다.

  5. 를 입력하여 삭제를 확인합니다confirm.

  6. 삭제를 선택합니다.

애플리케이션 로드 밸런서의 연결 로그

Elastic Load Balancing은 애플리케이션 로드 밸런서로 전송된 요청에 대한 속성을 캡처하는 연결 로그를 제공합니다. 연결 로그에는 클라이언트 IP 주소 및 포트, 클라이언트 인증서 정보, 연결 결과, 사용 중인 TLS 암호 등의 정보가 포함됩니다. 그런 다음 이러한 연결 로그를 사용하여 요청 패턴 및 기타 추세를 검토할 수 있습니다.

연결 로그에 대한 자세한 내용은 을 참조하십시오. Application Load Balancer의 연결 로그