View a markdown version of this page

상호 TLS를 위한 헬퍼 메서드 - Amazon CloudFront

상호 TLS를 위한 헬퍼 메서드

CloudFront는 최종 사용자 요청 함수의 cf.mtls 네임스페이스에 mTLS별 헬퍼 함수를 제공합니다. 이러한 함수는 요청을 오리진에 전달하기 전에 클라이언트 인증서 헤더의 이름을 바꾸거나, 형식을 바꾸거나, 결합합니다.

import cf from "cloudfront";

cf.mtls.renameClientCertHeaders

인증서 메타데이터 헤더의 이름을 사용자 지정 헤더 이름으로 변경합니다.

cf.mtls.renameClientCertHeaders({ "CloudFront-Viewer-Cert-Pem": "X-Client-Cert", "CloudFront-Viewer-Cert-Serial-Number": "X-Client-Cert-Serial", "CloudFront-Viewer-Cert-Issuer": "X-Client-Cert-Issuer", });

허용되는 소스 헤더:

  • CloudFront-Viewer-Cert-Pem

  • CloudFront-Viewer-Cert-Serial-Number

  • CloudFront-Viewer-Cert-Issuer

  • CloudFront-Viewer-Cert-Subject

  • CloudFront-Viewer-Cert-Validity

  • CloudFront-Viewer-Cert-Present

  • CloudFront-Viewer-Cert-Sha256

  • Client-Cert

  • Client-Cert-Chain

cf.mtls.renamePemHeaders

PEM 인증서 헤더의 이름을 바꾸고 선택적으로 인증서 인코딩의 형식을 변경합니다.

cf.mtls.renamePemHeaders({ "Client-Cert": { "newHeaderName": "X-Leaf-Cert", "pemCertFormatInfo": { "certHeader": "-----CUSTOM HEADER-----", "certFooter": "-----CUSTOM FOOTER-----", "certEndMarker": "", "keepNewlinesInCertData": true } }, "Client-Cert-Chain": { "newHeaderName": "X-Intermediate-Certs", "pemCertFormatInfo": { "certHeader": "-----CUSTOM HEADER-----", "certFooter": "-----CUSTOM FOOTER-----", "certEndMarker": "", "keepNewlinesInCertData": true } } });

허용되는 소스 헤더:

  • 패스스루 모드에서: Client-Cert, Client-Cert-Chain

  • 필수/선택 모드에서: Cloudfront-Viewer-Cert-PEM

pemCertFormatInfo 필드:

Cloudfront-Viewer-Cert-PEM의 경우:

  • certHeader가 를 대체합니다.-----BEGIN CERTIFICATE-----

  • certFooter가 를 대체합니다.-----END CERTIFICATE-----

  • certEndMarker는 certFooter 뒤에 사용자 지정 문자열을 설정합니다.

  • keepNewlinesInCertData(기본값: true)는 true일 때 base64 데이터의 줄 바꿈을 유지합니다.

Client-CertClient-Cert-Chain의 경우:

  • certHeader가 를 대체합니다.:

  • certFooter가 를 대체합니다.:

  • certEndMarker는 certFooter 뒤에 사용자 지정 문자열을 설정합니다.

  • keepNewlinesInCertData(기본값: false)는 true일 때 base64 데이터의 줄 바꿈을 유지합니다.

cf.mtls.combinePemHeaders

Client-CertClient-Cert-Chain을 전체 인증서 체인이 포함된 단일 헤더로 결합합니다.

cf.mtls.combinePemHeaders({ "newHeaderName": "X-Full-Chain", "pemCertFormatInfo": { "certHeader": "-----BEGIN CERTIFICATE-----", "certFooter": "-----END CERTIFICATE-----", "certEndMarker": "\n", "keepNewlinesInCertData": false } });

certEndMarker는 인증서 간의 구분 기호를 설정합니다.

참고
  • 이러한 헬퍼 함수는 모든 mTLS 모드(필수, 선택 및 패스스루)에서 사용할 수 있습니다. 그러나 cf.mtls.combinePemHeaders는 패스스루 모드에서만 적용됩니다. 필수 및 선택 모드에서는 Client-CertClient-Cert-Chain 헤더가 없으므로 함수는 no-op입니다.

  • cf.mtls.* 메서드와 customHeaders가 포함된 cf.updateRequestOrigin()이 동일한 헤더 이름을 대상으로 하는 경우 CloudFront는 502 오류를 반환합니다.

  • 패스스루 모드에서 CloudFront는 수신 Client-Cert 또는 Client-Cert-Chain 헤더를 모두 삭제하고 실제 클라이언트 인증서에서 다시 추가합니다.

  • CloudFront는 엣지 함수에서 전체 원시 PEM 인증서 콘텐츠를 제공하지 않습니다.