

# CloudFront ディストリビューションのオリジンの相互 TLS を有効にする
<a name="origin-enable-mtls-distributions"></a>

AWS Certificate Manager を使用してクライアント証明書を取得し、相互 TLS を要求するようにオリジンサーバーを設定したら、CloudFront ディストリビューションでオリジンの mTLS を有効にできます。

## 前提条件と要件
<a name="origin-mtls-prerequisites-requirements"></a>

CloudFront ディストリビューションでオリジンの mTLS を有効にする前に、以下を確認してください。
+ 米国東部 (バージニア北部) リージョン (us-east-1) の AWS Certificate Manager に保存されているクライアント証明書
+ 相互 TLS 認証を要求し、クライアント証明書を検証するように設定されたオリジンサーバー
+ パブリックに信頼された認証局からの証明書を提示するオリジンサーバー
+ CloudFront ディストリビューションを変更するためのアクセス許可
+ オリジンの mTLS は、ビジネス、プレミアムプラン、または従量制料金プランでのみ使用できます。

**注記**  
オリジンの mTLS は、カスタムオリジン (AWS の外部でホストされているオリジンを含む) と、Application Load Balancer や API Gateway などの相互 TLS をサポートする AWS オリジンに対して設定できます。

**重要**  
以下の CloudFront 機能は、オリジンの mTLS ではサポートされていません。  
**gRPC トラフィック:** gRPC プロトコルは、オリジンの mTLS が有効になっているオリジンではサポートされていません
**WebSocket 接続:** WebSocket プロトコルは、オリジンの mTLS が有効になっているオリジンではサポートされていません
**VPC オリジン:** オリジンの mTLS は VPC オリジンでは使用できません
**Lambda@Edge を使用したオリジンリクエストとオリジンレスポンスのトリガー:** オリジンリクエストとオリジンレスポンスの位置にある Lambda@Edge 関数は、オリジンの mTLS ではサポートされていません
**埋め込み POP:** 埋め込み POP ではオリジンの mTLS はサポートされていません

## オリジンの mTLS を有効にする
<a name="origin-enable-mtls-per-origin"></a>

オリジンごとの設定では、同じディストリビューション内のオリジンごとに異なるクライアント証明書を指定できます。このアプローチは、オリジンごとに認証要件が異なる場合に最大限の柔軟性を提供します。

### 新しいディストリビューションの場合 (コンソール)
<a name="origin-enable-mtls-new-distributions"></a>

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. **[ディストリビューションを作成]** を選択します。

1. 料金プランを選択します。**[ビジネス]** プラン、**[プレミアム]** プラン、**[従量制料金]** プランのいずれかを選択します (無料プランではオリジンの mTLS を利用できません)。

1. オリジン設定セクションで、オリジンタイプをその他として選択します

1. **[オリジン設定]** セクションで、**[オリジン設定のカスタマイズ]** を選択します

1. 最初のオリジン (ドメイン名、プロトコルなど) を設定します

1. オリジン設定で、**[mTLS]** を検索します。

1. **[mTLS]** をオンに切り替える

1. **[クライアント証明書]** の場合は、AWS Certificate Manager から証明書を選択します

1. (オプション) 独自のオリジンの mTLS 設定を持つオリジンを追加します

1. 残りのディストリビューション設定を完了し、**[ディストリビューションを作成する]** を選択します。

### 既存のディストリビューションの場合 (コンソール)
<a name="origin-enable-mtls-existing-distributions"></a>

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ディストリビューションリストから、変更するディストリビューションを選択します。(注: ディストリビューションが **[プロ、プレミアム、または従量制料金]** の料金プランになっていることを確認します。そうでない場合は、オリジンの mTLS を有効にする前に料金プランをアップグレードする必要があります)

1. **[オリジン]** タブを選択します

1. 設定するオリジンを選択し、**[編集]** を選択します

1. オリジン設定で、**[mTLS]** を検索します。

1. **[mTLS]** をオンに切り替える

1. **[クライアント証明書]** の場合は、AWS Certificate Manager から証明書を選択します。(注: EKU (拡張キー使用法) プロパティが「TLS クライアント認証」に設定されているクライアント証明書のみが一覧表示されます)

1. **[変更を保存]** を選択します。

1. 必要に応じて、追加のオリジンに対して繰り返します。

## AWS CLI を使用する
<a name="origin-enable-mtls-cli"></a>

オリジンごとの設定では、各オリジンの設定内でオリジンの mTLS 設定を指定します。

```
{
  "Origins": {
    "Quantity": 2,
    "Items": [
      {
        "Id": "origin-1",
        "DomainName": "api.example.com",
        "CustomOriginConfig": {
          "HTTPSPort": 443,
          "OriginProtocolPolicy": "https-only"
        },
        "OriginMtlsConfig": {
          "ClientCertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/cert-1"
        }
      },
      {
        "Id": "origin-2",
        "DomainName": "backend.example.com",
        "CustomOriginConfig": {
          "HTTPSPort": 443,
          "OriginProtocolPolicy": "https-only"
        },
        "OriginMtlsConfig": {
          "CertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/cert-2"
        }
      }
    ]
  }
}
```

**注記**  
サーバーがクライアント証明書を要求しない場合、CloudFront はクライアント証明書を提供しないため、接続を正常に続行できます。

## 次のステップ
<a name="origin-enable-mtls-next-steps"></a>

CloudFront ディストリビューションでオリジンの mTLS を有効にした後、CloudFront アクセスログを使用して認証イベントをモニタリングできます。