本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
交互 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) 會在 base64 資料中保留新行,若為 true。
針對 Client-Cert 和 Client-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-Cert和Client-Cert-Chain標頭不存在,因此函數是無操作。 -
如果
cf.mtls.*方法 和cf.updateRequestOrigin()customHeaders的目標標頭名稱相同,CloudFront 會傳回 502 錯誤。 -
在傳遞模式中,CloudFront 會捨棄任何傳入
Client-Cert或Client-Cert-Chain標頭,並從實際用戶端憑證重新新增它們。 -
CloudFront 不會在任何邊緣函數中顯示完整的原始 PEM 憑證內容。