

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 快取政策並轉送至原始伺服器的檢視器 mTLS 標頭
<a name="viewer-mtls-headers"></a>

使用交互 TLS 身分驗證時，CloudFront 可以從用戶端憑證擷取資訊，並將其作為 HTTP 標頭轉送到您的原始伺服器。這可讓您的原始伺服器存取憑證詳細資訊，而無需實作憑證驗證邏輯。

下列標頭可供 用來建立快取行為：


| 標頭名稱 | Description | 範例值 | 
| --- | --- | --- | 
| CloudFront-Viewer-Cert-Serial-Number | 憑證序號的十六進位表示 | 4a：3f：5c：92：d1：e8：7b：6c | 
| CloudFront-Viewer-Cert-Issuer | RFC2253 發行者辨別名稱 (DN) 的字串表示 | CN=rootcamtls.com，OU=rootCA，O=mTLS，L=Seattle，ST=Washington，C=US | 
| CloudFront-Viewer-Cert-Subject | 主旨辨別名稱 (DN) 的 RFC2253 字串表示 | CN=client\$1.com，OU=client-3，O=mTLS，ST=Washington，C=US | 
| CloudFront-Viewer-Cert-Present | 1 （存在） 或 0 （不存在） 表示憑證是否存在。在必要模式下，此值一律為 1。 | 1 | 
| CloudFront-Viewer-Cert-Sha256 | 用戶端憑證的 SHA256 雜湊 | 01fbf94fef5569753420c349f49adbfd80af5275377816e3ab1fb371b29cb586 | 

對於原始伺服器請求，除了上述可用於快取行為的標頭之外，還提供兩個額外的標頭。由於可能的標頭大小，CloudFront-Viewer-Cert-Pem 標頭不會公開至邊緣函數 (Lambda@Edge 或 CloudFront Functions)，而且只會轉送至原始伺服器。


| 標頭名稱 | Description | 範例值 | 
| --- | --- | --- | 
| CloudFront-Viewer-Cert-Validity | notBefore和 notAfter date 的 ISO8601 格式 | CloudFront-Viewer-Cert-Validity：NotBefore=2023-09-21T01：50：17Z；NotAfter=2024-09-20T01：50：17Z | 
| CloudFront-Viewer-Cert-Pem | 分葉憑證的 URL 編碼 PEM 格式 | CloudFront-Viewer-Cert-Pem：-----BEGIN%20CERTIFICATE-----%0AMIIG<...reduced...>NmrUlw%0A-----END%20CERTIFICATE-----%0A | 

## 設定標頭轉送
<a name="configure-header-forwarding"></a>

### 主控台
<a name="configure-headers-console"></a>

在驗證模式中，CloudFront 會自動將 CloudFront-Viewer-Cert-\$1 標頭新增至所有檢視器請求。若要將這些標頭轉送到您的原始伺服器：

1. 在主清單分佈頁面中，選取已啟用檢視器 mTLS 的分佈，然後前往**行為**索引標籤

1. 選取快取行為，然後選擇**編輯**

1. 在**原始伺服器請求政策**區段中，選擇**建立政策**或選取現有政策

1. 確保原始伺服器請求政策中包含下列標頭：
   + CloudFront-Viewer-Cert-Serial-Number
   + CloudFront-Viewer-Cert-Issuer
   + CloudFront-Viewer-Cert-Subject
   + CloudFront-Viewer-Cert-Present
   + Cloudfront-Viewer-Cert-Sha256
   + CloudFront-Viewer-Cert-Validity
   + CloudFront-Viewer-Cert-Pem

1. 選擇**建立** （適用於新政策） 或**儲存變更** （適用於現有政策）

1. 在快取行為中選取政策並儲存變更

### 使用 AWS CLI
<a name="configure-headers-cli"></a>

下列範例示範如何建立原始伺服器請求政策，其中包含用於驗證模式的 mTLS 標頭：

```
aws cloudfront create-origin-request-policy \
  --origin-request-policy-config '{
    "Name": "MTLSHeadersPolicy",
    "HeadersConfig": {
      "HeaderBehavior": "whitelist",
      "Headers": {
        "Quantity": 5,
        "Items": [
          "CloudFront-Viewer-Cert-Serial-Number",
          "CloudFront-Viewer-Cert-Issuer",
          "CloudFront-Viewer-Cert-Subject",
          "CloudFront-Viewer-Cert-Validity",
          "CloudFront-Viewer-Cert-Pem"
        ]
      }
    },
    "CookiesConfig": {
      "CookieBehavior": "none"
    },
    "QueryStringsConfig": {
      "QueryStringBehavior": "none"
    }
  }'
```

## 標頭處理考量
<a name="header-processing-considerations"></a>

使用憑證標頭時，請考慮下列最佳實務：
+ **標頭驗證：**驗證原始伺服器的憑證標頭值作為額外的安全措施
+ **標頭大小限制：**PEM 憑證標頭可以很大，確保您的原始伺服器可以處理它們
+ **快取考量：**在快取金鑰中使用憑證標頭會增加快取分段
+ **跨來源請求：**如果您的應用程式使用 CORS，則您可能需要將其設定為允許憑證標頭

## 後續步驟
<a name="headers-next-steps"></a>

設定標頭轉送之後，您可以使用 CloudFront Connection Functions 和 KeyValueStore 實作憑證撤銷檢查。如需實作撤銷檢查的詳細資訊，請參閱 [使用 CloudFront Connection Function 和 KVS 撤銷](revocation-connection-function-kvs.md)。