

# オリジンに転送されるキャッシュポリシーの mTLS ヘッダービューワー
<a name="viewer-mtls-headers"></a>

相互 TLS 認証を使用する場合、CloudFront はクライアント証明書から情報を抽出し、HTTP ヘッダーとしてオリジンに転送できます。これにより、オリジンサーバーは証明書の検証ロジックを実装せずに証明書の詳細にアクセスできます。

キャッシュ動作を作成するために、次のヘッダーを使用できます。


| ヘッダー名 | 説明 | 値の例 | 
| --- | --- | --- | 
| CloudFront-Viewer-Cert-Serial-Number | 証明書のシリアル番号の 16 進数表現 | 4a:3f:5c:92:d1:e8:7b:6c | 
| CloudFront-Viewer-Cert-Issuer | 発行者の識別名 (DN) の RFC2253 文字列表現 | 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 | 

オリジンリクエストの場合、キャッシュ動作に使用できる上記のヘッダーに加えて、2 つのヘッダーが追加されます。


| ヘッダー名 | 説明 | 値の例 | 
| --- | --- | --- | 
| 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)」を参照してください。