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-CertClient-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-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-Cert ヘッダーと Client-Cert-Chain ヘッダーが存在しないため、関数は何もしません。

  • cf.mtls.* メソッドと customHeaders を指定した cf.updateRequestOrigin() が同じヘッダー名をターゲットにしている場合、CloudFront は 502 エラーを返します。

  • パススルーモードでは、CloudFront は受信した Client-Cert ヘッダーまたは Client-Cert-Chain ヘッダーを削除し、実際のクライアント証明書から再追加します。

  • CloudFront は、エッジ関数に未加工の PEM 証明書の完全なコンテンツを表示しません。