CloudFront ディストリビューションの相互 TLS (オリジン) を有効にする
AWS Certificate Manager を使用してクライアント証明書を取得し、相互 TLS を要求するようにオリジンサーバーを設定したら、CloudFront ディストリビューションで相互 TLS (オリジン) を有効にできます。
前提条件と要件
CloudFront ディストリビューションで相互 TLS (オリジン) を有効にする前に、以下を確認してください。
米国東部 (バージニア北部) リージョン (us-east-1) の AWS Certificate Manager に保存されているクライアント証明書
相互 TLS 認証を要求し、クライアント証明書を検証するように設定されたオリジンサーバー
パブリックに信頼された認証局からの証明書を提示するオリジンサーバー
CloudFront ディストリビューションを変更するためのアクセス許可
相互 TLS (オリジン) は、ビジネス、プレミアムプラン、または従量制料金プランでのみ使用できます。
注記
相互 TLS (オリジン) は、カスタムオリジン (AWS の外部でホストされているオリジンを含む) と、Application Load Balancer や API Gateway などの相互 TLS をサポートする AWS オリジンに対して設定できます。
重要
以下の CloudFront 機能は、相互 TLS (オリジン) ではサポートされていません。
gRPC トラフィック: gRPC プロトコルは、相互 TLS (オリジン) が有効になっているオリジンではサポートされていません
WebSocket 接続: WebSocket プロトコルは、相互 TLS (オリジン) が有効になっているオリジンではサポートされていません
VPC オリジン: 相互 TLS (オリジン) は VPC オリジンでは使用できません
Lambda@Edge を使用したオリジンリクエストとオリジンレスポンスのトリガー: オリジンリクエストとオリジンレスポンスの位置にある Lambda@Edge 関数は、相互 TLS (オリジン) ではサポートされていません
埋め込み POP: 埋め込み POP では相互 TLS (オリジン) はサポートされていません
相互 TLS (オリジン) を有効にする
オリジンごとの設定では、同じディストリビューション内のオリジンごとに異なるクライアント証明書を指定できます。このアプローチは、オリジンごとに認証要件が異なる場合に最大限の柔軟性を提供します。
新しいディストリビューションの場合 (コンソール)
-
AWS マネジメントコンソールにサインインし、https://console.aws.amazon.com/cloudfront/v4/home
で CloudFront コンソールを開きます。 -
[ディストリビューションを作成] を選択します。
-
料金プランを選択します。[ビジネス] プラン、[プレミアム] プラン、[従量制料金] プランのいずれかを選択します (無料プランでは相互 TLS (オリジン) を利用できません)。
-
オリジン設定セクションで、オリジンタイプをその他として選択します
-
[オリジン設定] セクションで、[オリジン設定のカスタマイズ] を選択します
-
最初のオリジン (ドメイン名、プロトコルなど) を設定します
-
オリジン設定で、[相互 TLS (オリジン)] を見つけます
-
[相互 TLS (オリジン) を有効にする] をオンに切り替えます
-
[クライアント証明書] の場合は、AWS Certificate Manager から証明書を選択します
-
(オプション) 独自の相互 TLS (オリジン) 設定を持つオリジンを追加します
-
残りのディストリビューション設定を完了し、[ディストリビューションを作成する] を選択します。
既存のディストリビューションの場合 (コンソール)
AWS マネジメントコンソールにサインインし、https://console.aws.amazon.com/cloudfront/v4/home
で CloudFront コンソールを開きます。 -
ディストリビューションリストから、変更するディストリビューションを選択します。(注: ディストリビューションがプロ、プレミアム、または従量制料金の料金プランになっていることを確認します。そうでない場合は、相互 TLS (オリジン) を有効にする前に料金プランをアップグレードする必要があります)
-
[オリジン] タブを選択します
-
設定するオリジンを選択し、[編集] を選択します
-
オリジン設定で、[相互 TLS (オリジン)] を見つけます
-
[相互 TLS (オリジン) を有効にする] をオンに切り替えます
-
[クライアント証明書] の場合は、AWS Certificate Manager から証明書を選択します。(注: EKU (拡張キー使用法) プロパティが「TLS クライアント認証」に設定されているクライアント証明書のみが一覧表示されます)
-
[変更を保存] を選択します。
-
必要に応じて、追加のオリジンに対して繰り返します。
AWS CLI を使用する
オリジンごとの設定では、各オリジンの設定内で相互 TLS (オリジン) 設定を指定します。
{ "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 はクライアント証明書を提供しないため、接続を正常に続行できます。
次のステップ
CloudFront ディストリビューションで相互 TLS (オリジン) を有効にした後、CloudFront アクセスログを使用して認証イベントをモニタリングできます。