오리진으로 전달된 캐시 정책에 대한 뷰어 mTLS 헤더 - Amazon CloudFront

오리진으로 전달된 캐시 정책에 대한 뷰어 mTLS 헤더

상호 TLS 인증을 사용하는 경우, CloudFront는 클라이언트 인증서에서 정보를 추출하여 오리진에 HTTP 헤더로 전달할 수 있습니다. 이렇게 하면 오리진 서버가 인증서 검증 로직을 구현하지 않고도 인증서 세부 정보에 액세스할 수 있습니다.

캐시 동작을 생성하는 데 사용할 수 있는 헤더는 다음과 같습니다.

헤더 이름 설명 예시 값
CloudFront-Viewer-Cert-Serial-Number 인증서 일련 번호의 16진수 표현 4a:3f:5c:92:d1:e8:7b:6c
CloudFront-Viewer-Cert-Issuer 발급자 고유 이름(DN)의 RFC2253 문자열 표현 CN=rootcamtls.com,OU=rootCA,O=mTLS,L=Seattle,ST=Washington,C=US
CloudFront-Viewer-Cert-Subject 주체 고유 이름(DN)의 RFC2253 문자열 표현 CN=client_.com,OU=client-3,O=mTLS,ST=Washington,C=US
CloudFront-Viewer-Cert-Present 인증서가 있는지 여부를 나타내는 1(존재) 또는 0(존재하지 않음)입니다. 이 값은 필수 모드에서 항상 1입니다. 1
CloudFront-Viewer-Cert-Sha256 클라이언트 인증서의 SHA256 해시 01fbf94fef5569753420c349f49adbfd80af5275377816e3ab1fb371b29cb586

오리진 요청의 경우 캐시 동작에 사용할 수 있는 위의 헤더 외에도 두 개의 추가 헤더가 제공됩니다.

헤더 이름 설명 예시 값
CloudFront-Viewer-Cert-Validity notBefore 및 notAfter 날짜의 ISO8601 형식 CloudFront-Viewer-Cert-Validity: NotBefore=2023-09-21T01:50:17Z;NotAfter=2024-09-20T01:50:17Z
CloudFront-Viewer-Cert-Pem 리프 인증서의 URL 인코딩 PEM 형식 CloudFront-Viewer-Cert-Pem: -----BEGIN%20CERTIFICATE-----%0AMIIG<...reduced...>NmrUlw%0A-----END%20CERTIFICATE-----%0A

헤더 전달 구성

콘솔

확인 모드에서 CloudFront는 모든 뷰어 요청에 CloudFront-Viewer-Cert-* 헤더를 자동으로 추가합니다. 이러한 헤더를 오리진에 전달하려면 다음을 수행합니다.

  1. 기본 목록 배포 페이지에서 뷰어 mTLS가 활성화된 배포를 선택하고 동작 탭으로 이동합니다.

  2. 캐시 동작을 선택한 다음 편집을 선택합니다.

  3. 오리진 요청 정책 섹션에서 정책 생성을 선택하거나 기존 정책을 선택합니다.

  4. 오리진 요청 정책에 다음 헤더가 포함되어 있는지 확인합니다.

    • CloudFront-Viewer-Cert-Serial-Number

    • CloudFront-Viewer-Cert-Issuer

    • CloudFront-Viewer-Cert-Subject

    • CloudFront-Viewer-Cert-Present

    • Cloudfront-Viewer-Cert-Sha256

    • CloudFront-Viewer-Cert-Validity

    • CloudFront-Viewer-Cert-Pem

  5. 생성(새 정책의 경우) 또는 변경 사항 저장(기존 정책의 경우)을 선택합니다.

  6. 캐시 동작 내에서 정책을 선택하고 변경 사항을 저장합니다.

AWS CLI 사용

다음 예제에서는 확인 모드를 위한 mTLS 헤더가 포함된 오리진 요청 정책을 생성하는 방법을 보여줍니다.

aws cloudfront create-origin-request-policy \ --origin-request-policy-config '{ "Name": "MTLSHeadersPolicy", "HeadersConfig": { "HeaderBehavior": "whitelist", "Headers": { "Quantity": 5, "Items": [ "CloudFront-Viewer-Cert-Serial-Number", "CloudFront-Viewer-Cert-Issuer", "CloudFront-Viewer-Cert-Subject", "CloudFront-Viewer-Cert-Validity", "CloudFront-Viewer-Cert-Pem" ] } }, "CookiesConfig": { "CookieBehavior": "none" }, "QueryStringsConfig": { "QueryStringBehavior": "none" } }'

헤더 처리 고려 사항

인증서 헤더로 작업할 때는 다음 모범 사례를 고려하세요.

  • 헤더 검증: 추가 보안 조치로 오리진의 인증서 헤더 값을 확인합니다.

  • 헤더 크기 제한: 오리진 서버가 처리할 수 있도록 PEM 인증서 헤더의 크기를 키울 수 있습니다.

  • 캐시 고려 사항: 캐시 키에서 인증서 헤더를 사용하면 캐시 조각화가 증가합니다.

  • 교차 오리진 요청: 애플리케이션에서 CORS를 사용하는 경우 인증서 헤더를 허용하도록 구성해야 할 수 있습니다.

다음 단계

헤더 전달을 구성한 후 CloudFront 연결 함수 및 KeyValueStore를 사용하여 인증서 해지 확인을 구현할 수 있습니다. 해지 확인 구현에 대한 자세한 내용은 CloudFront 연결 함수 및 KVS를 사용한 해지 섹션을 참조하세요.