오리진으로 전달된 캐시 정책에 대한 뷰어 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-* 헤더를 자동으로 추가합니다. 이러한 헤더를 오리진에 전달하려면 다음을 수행합니다.
-
기본 목록 배포 페이지에서 뷰어 mTLS가 활성화된 배포를 선택하고 동작 탭으로 이동합니다.
-
캐시 동작을 선택한 다음 편집을 선택합니다.
-
오리진 요청 정책 섹션에서 정책 생성을 선택하거나 기존 정책을 선택합니다.
-
오리진 요청 정책에 다음 헤더가 포함되어 있는지 확인합니다.
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
-
생성(새 정책의 경우) 또는 변경 사항 저장(기존 정책의 경우)을 선택합니다.
-
캐시 동작 내에서 정책을 선택하고 변경 사항을 저장합니다.
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를 사용한 해지 섹션을 참조하세요.