相互 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-PemCloudFront-Viewer-Cert-Serial-NumberCloudFront-Viewer-Cert-IssuerCloudFront-Viewer-Cert-SubjectCloudFront-Viewer-Cert-ValidityCloudFront-Viewer-Cert-PresentCloudFront-Viewer-Cert-Sha256Client-CertClient-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-Cert および Client-Cert-Chain の場合:
certHeader[] が [] を置き換えます。:certFooter[] が [] を置き換えます。:certEndMarkerは certFooter の後にカスタム文字列を設定します。keepNewlinesInCertData(デフォルト:false) true の場合、base64 データに改行が保持されます。
cf.mtls.combinePemHeaders
Client-Cert と Client-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-CertヘッダーとClient-Cert-Chainヘッダーが存在しないため、関数は何もしません。 -
cf.mtls.*メソッドとcustomHeadersを指定したcf.updateRequestOrigin()が同じヘッダー名をターゲットにしている場合、CloudFront は 502 エラーを返します。 -
パススルーモードでは、CloudFront は受信した
Client-CertヘッダーまたはClient-Cert-Chainヘッダーを削除し、実際のクライアント証明書から再追加します。 -
CloudFront は、エッジ関数に未加工の PEM 証明書の完全なコンテンツを表示しません。