CloudFront ディストリビューションの相互 TLS を有効にする - Amazon CloudFront

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 を有効にします。

既存のディストリビューションの場合

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

  2. ディストリビューションリストから、変更するディストリビューションを選択します。

  3. すべてのキャッシュ動作についてビューワープロトコルポリシーが [HTTP を HTTPS にリダイレクト] または [HTTPS のみ] に設定されている必要があります。([キャッシュ動作] タブを選択すると、HTTP プロトコルポリシーでキャッシュ動作を表示および更新できます。)

  4. [General] (全般) タブを選択します。

  5. 設定 セクションで、編集 を選択します。

  6. [接続] セクションで、ビューワー相互認証 (mTLS) を検索します。

  7. [相互認証を有効にする] をオンに切り替えます。

  8. [クライアント証明書の検証モード] で、[必須] (すべてのクライアントが証明書を提示する必要がある) または [オプション] (クライアントはオプションで証明書を提示できる) を選択します。

  9. [トラストストア] で、以前に作成したトラストストアを選択します。

  10. (オプション) CloudFront が TLS ハンドシェイク中に CA 名をクライアントに送信する場合は、[トラストストア CA 名をアドバタイズ] を切り替えます。

  11. (オプション) 有効期限が切れた証明書を使用した接続を許可する場合は、証明書の有効期限を無視します。

  12. [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 を関連付ける」を参照してください。