CloudFront ディストリビューションの相互 TLS を有効にする
前提条件と要件
CloudFront の相互 TLS 検証モードでは、すべてのクライアントが TLS ハンドシェイク中に有効な証明書を提示する必要があり、有効な証明書がない接続を拒否します。CloudFront ディストリビューションで相互 TLS を有効にする前に、以下を確認してください。
認証局証明書を含むトラストストアを作成した
トラストストアを CloudFront ディストリビューションに関連付けた
すべての分散キャッシュ動作が HTTPS のみのビューワープロトコルポリシーを使用していることを確認した
ディストリビューションが HTTP/2 を使用していることを確認した (デフォルト設定、ビューワー mTLS は HTTP/3 ではサポートされていません)
注記
相互 TLS 認証には、ビューワーと CloudFront 間で HTTPS 接続が必要です。HTTP 接続をサポートするキャッシュ動作を持つディストリビューションで mTLS を有効にすることはできません。
相互 TLS を有効にする (コンソール)
新しいディストリビューションの場合
CloudFront コンソールで新しいディストリビューションを作成するプロセスでビューワー mTLS を設定することはできません。まず、任意の方法 (コンソール、CLI、API) でディストリビューションを作成し、ディストリビューション設定を編集して、以下の既存のディストリビューションの手順に従ってビューワー mTLS を有効にします。
既存のディストリビューションの場合
AWS マネジメントコンソールにサインインし、https://console.aws.amazon.com/cloudfront/v4/home
で CloudFront コンソールを開きます。 -
ディストリビューションリストから、変更するディストリビューションを選択します。
-
すべてのキャッシュ動作についてビューワープロトコルポリシーが [HTTP を HTTPS にリダイレクト] または [HTTPS のみ] に設定されている必要があります。([キャッシュ動作] タブを選択すると、HTTP プロトコルポリシーでキャッシュ動作を表示および更新できます。)
-
[General] (全般) タブを選択します。
-
設定 セクションで、編集 を選択します。
-
[接続] セクションで、ビューワー相互認証 (mTLS) を検索します。
-
[相互認証を有効にする] をオンに切り替えます。
-
[クライアント証明書の検証モード] で、[必須] (すべてのクライアントが証明書を提示する必要がある) または [オプション] (クライアントはオプションで証明書を提示できる) を選択します。
-
[トラストストア] で、以前に作成したトラストストアを選択します。
-
(オプション) CloudFront が TLS ハンドシェイク中に CA 名をクライアントに送信する場合は、[トラストストア CA 名をアドバタイズ] を切り替えます。
-
(オプション) 有効期限が切れた証明書を使用した接続を許可する場合は、証明書の有効期限を無視します。
-
[Save changes] (変更の保存) をクリックします。
相互 TLS を有効にする (AWS CLI)
新しいディストリビューションの場合
次の例は、mTLS 設定を含むディストリビューション設定ファイル (distribution-config.json) を作成する方法を示します。
{ "CallerReference": "cli-example-1", "Origins": { "Quantity": 1, "Items": [ { "Id": "my-origin", "DomainName": "example.com", "CustomOriginConfig": { "HTTPPort": 80, "HTTPSPort": 443, "OriginProtocolPolicy": "https-only" } } ] }, "DefaultCacheBehavior": { "TargetOriginId": "my-origin", "ViewerProtocolPolicy": "https-only", "MinTTL": 0, "ForwardedValues": { "QueryString": false, "Cookies": { "Forward": "none" } } }, "ViewerCertificate": { "CloudFrontDefaultCertificate": true }, "ViewerMtlsConfig": { "Mode": "required", "TrustStoreConfig": { "TrustStoreId": {TRUST_STORE_ID}, "AdvertiseTrustStoreCaNames": true, "IgnoreCertificateExpiry": true } }, "Enabled": true }
次のコマンド例を使用し、mTLS を有効にしてディストリビューションを作成します。
aws cloudfront create-distribution --distribution-config file://distribution-config.json
既存のディストリビューションの場合
次のコマンド例を使用し、現在のディストリビューション設定を取得します。
aws cloudfront get-distribution-config --id E1A2B3C4D5E6F7 --output json > dist-config.json
ファイルを編集して mTLS 設定を追加します。次の例のセクションをディストリビューション設定に追加します。
"ViewerMtlsConfig": { "Mode": "required", "TrustStoreConfig": { "TrustStoreId": {TRUST_STORE_ID}, "AdvertiseTrustStoreCaNames": true, "IgnoreCertificateExpiry": true } }
ファイルから ETag フィールドを削除しますが、その値は個別に保存します。
次のコマンド例を使用し、新しい設定でディストリビューションを更新します。
aws cloudfront update-distribution \ --id E1A2B3C4D5E6F7 \ --if-match YOUR-ETAG-VALUE \ --distribution-config file://dist-config.json
ビューワープロトコルポリシー
相互 TLS を使用する場合、すべてのディストリビューションキャッシュ動作を HTTPS のみのビューワープロトコルポリシーで設定する必要があります。
-
HTTP を HTTPS にリダイレクト - 証明書の検証を実行する前に HTTP リクエストを HTTPS にリダイレクトします。
-
HTTPS のみ - HTTPS リクエストのみを受け入れて証明書の検証を実行します。
注記
HTTP 接続では証明書の検証を実行できないため、HTTP および HTTPS ビューワープロトコルポリシーは相互 TLS ではサポートされません。
次のステップ
CloudFront ディストリビューションでビューワー TLS を有効にしたら、Connection Functions を関連付けてカスタム証明書検証ロジックを実装できます。Connection Functions により、カスタム検証ルール、証明書失効チェック、ログ記録を使用して、組み込み mTLS 認証機能を拡張できます。Connection Functions の作成と関連付けの詳細については、「CloudFront Connection Function を関連付ける」を参照してください。