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) 會在 base64 資料中保留新行,若為 true。

針對 Client-CertClient-Cert-Chain

  • certHeader 取代了 :

  • certFooter 取代了 :

  • certEndMarker 會在 certFooter 之後設定自訂字串。

  • keepNewlinesInCertData (預設值:false) 會在 base64 資料中保留新行,若為 true。

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-CertClient-Cert-Chain標頭不存在,因此函數是無操作。

  • 如果cf.mtls.*方法 和 cf.updateRequestOrigin() customHeaders的目標標頭名稱相同,CloudFront 會傳回 502 錯誤。

  • 在傳遞模式中,CloudFront 會捨棄任何傳入 Client-CertClient-Cert-Chain標頭,並從實際用戶端憑證重新新增它們。

  • CloudFront 不會在任何邊緣函數中顯示完整的原始 PEM 憑證內容。