CloudFront で HTTPS リクエストを処理する方法を選択する - Amazon CloudFront

CloudFront で HTTPS リクエストを処理する方法を選択する

ビューワーに HTTPS とファイルの代替ドメイン名を使用させる場合、CloudFront サーバーが HTTPS リクエストを処理する方法に関する次のいずれかのオプションを選択する必要があります。

このセクションでは各オプションの仕組みについて説明します。

SNI を使用して HTTPS リクエストを処理する (ほとんどのクライアントで有効)

Server Name Indication (SNI) は、2010 年以降にリリースされたブラウザとクライアントでサポートされている TLS プロトコルを拡張したものです。SNI を使用して HTTPS リクエストに対応するように CloudFront を設定した場合、CloudFront は代替ドメイン名を各エッジロケーションの IP アドレスと関連付けます。ビューワーがコンテンツに対して HTTPS リクエストを送信すると、DNS は、正しいエッジロケーションの IP アドレスにリクエストをルーティングします。ドメイン名の IP アドレスが SSL/TLS ハンドシェイクネゴシエーション中に決定されます。IP アドレスはディストリビューション専用にはなりません。

SSL/TLS ネゴシエーションは、HTTPS 接続を確立する処理の早い段階で実行されます。リクエストがどのドメイン向けかをすぐに決定できない場合、CloudFront は接続を中断します。SNI をサポートするビューワーがコンテンツに対して HTTPS リクエストを送信すると、次のようになります。

  1. ビューワーはリクエスト URL からドメイン名を自動的に取得し、TLS クライアントの hello メッセージの SNI 拡張に追加します。

  2. CloudFront は、TLS クライアント hello を受け取ると、SNI 拡張のドメイン名を使用して、一致する CloudFront ディストリビューションを検索し、関連する TLS 証明書を返します。

  3. ビューワーと CloudFront は、SSL/TLS ネゴシエーションを実行します。

  4. CloudFront はリクエストされたコンテンツをビューワーに返します。

現在 SNI をサポートするブラウザの一覧については、Wikipedia の Server Name Indication の項目を参照してください。

SNI を使用したくても、ユーザーのブラウザの一部が SNI をサポートしていない場合は、選択肢がいくつかあります。

  • SNI ではなく専用 IP アドレスを使用して HTTPS リクエストを供給するように CloudFront を構成します。詳細については、「専用 IP アドレスを使用して HTTPS リクエストを処理する (すべてのクライアントで有効)」を参照してください。

  • カスタム証明書の代わりに CloudFront SSL/TLS 証明書を使用してください。この場合、ファイルの URL でディストリビューションの CloudFront ドメイン名を使用する必要があります (たとえば、https://d111111abcdef8.cloudfront.net/logo.png)。

    デフォルトの CloudFront 証明書を使用する場合、ビューワーは SSL プロトコル TLSv1 以降をサポートする必要があります。CloudFront はデフォルトの CloudFront 証明書では SSLv3 をサポートしません。

    また、CloudFront で使用する SSL/TLS 証明書を独自証明書からデフォルトの CloudFront 証明書に変更する必要もあります。

    • ディストリビューションを使用してコンテンツを配信したことがない場合は、単に構成を変更できます。詳細については、「ディストリビューションを更新する」を参照してください。

    • ディストリビューションを使用してコンテンツを配信していた場合は、新しい CloudFront ディストリビューションを作成し、コンテンツが使用できない時間を減らすかゼロにするために、ファイルの URL を変更する必要があります。詳細については、「カスタム SSL/TLS 証明書からデフォルト CloudFront 証明書に戻す」を参照してください。

  • ユーザーが使用するブラウザを管理できる場合は、SNI をサポートするブラウザにアップグレードしてもらいます。

  • HTTPS の代わりに HTTP を使用します。

専用 IP アドレスを使用して HTTPS リクエストを処理する (すべてのクライアントで有効)

Server Name Indication (SNI) は、リクエストをドメインと関連付ける 1 つの方法です。専用 IP アドレスを使用する方法もあります。2010 年以降にリリースされたブラウザまたはクライアントにアップグレードできないユーザーが存在する場合は、専用 IP アドレスを使用して HTTPS リクエストに対応できます。現在 SNI をサポートするブラウザの一覧については、Wikipedia の Server Name Indication の項目を参照してください。

重要

専用 IP アドレスを使用して HTTPS リクエストを供給するように CloudFront を構成した場合、追加の月額料金が発生します。課金は、ディストリビューションに SSL/TLS 証明書を関連付けて、ディストリビューションを有効にした時点から開始されます。CloudFront の料金の詳細については、「Amazon CloudFront の料金」を参照してください。また、Using the Same Certificate for Multiple CloudFront Distributions も参照してください。

専用 IP アドレスを使用して HTTPS リクエストに対応するように CloudFront を設定すると、CloudFront は証明書を各 CloudFront エッジロケーションの専用 IP アドレスと関連付けます。ビューワーがコンテンツに HTTPS リクエストを送信すると、次のようになります。

  1. DNS は、該当するエッジロケーション内のディストリビューションの IP アドレスにリクエストをルーティングします。

  2. クライアントリクエストの ClientHello メッセージに SNI 拡張が含まれている場合、CloudFront は、その SNI に関連付けられているディストリビューションを検索します。

    • 一致するものがあれば、CloudFront は SSL/TLS 証明書を使用してリクエストに応答します。

    • 一致するものがない場合、CloudFront は代わりに IP アドレスを使用してディストリビューションを特定し、どの SSL/TLS 証明書をビューワーに返すかを決定します。

  3. ビューワーと CloudFront は SSL/TLS 証明書を使って SSL/TLS ネゴシエーションを実行します。

  4. CloudFront はリクエストされたコンテンツをビューワーに返します。

この方法は、ユーザーが使用するブラウザやその他のビューワーを問わず、あらゆる HTTPS リクエストで機能します。

注記

専用 IP は静的 IP ではないため、時間の経過とともに変化する可能性があります。エッジロケーションに返される IP アドレスは、CloudFront エッジサーバーリスト の IP アドレス範囲から動的に割り当てられます。

CloudFront エッジサーバーの IP アドレス範囲は、変わる可能性があります。IP アドレスの変更に関する通知を受け取るには、Amazon SNS 経由で AWS パブリック IP アドレスの変更をサブスクライブします。

3 つ以上の SSL/TLS 専用 IP 証明書を使用するためのアクセス許可をリクエストする

CloudFront に 3 つ以上の SSL/TLS 専用 IP 証明書を永続的に関連付けるための許可が必要な場合は、以下の手順を実行します。HTTPS リクエストの詳細については、「CloudFront で HTTPS リクエストを処理する方法を選択する」を参照してください。

注記

CloudFront ディストリビューションに 3 つ以上の専用 IP 証明書を使用するための手順は以下の通りです。デフォルト値は 2 です。ディストリビューションには SSL 証明書を複数バインドできないのでご注意ください。

CloudFront ディストリビューションに関連付けることができる SSL/TLS 証明書は、一度に 1 つのみです。この数は、すべての CloudFront ディストリビューションで使用できる専用 IP SSL 証明書の合計数です。

CloudFront ディストリビューションに 3 つ以上の証明書を使用するための許可をリクエストするには
  1. サポートセンターにアクセスし、サポートケースを作成します。

  2. 使用するためのアクセス権限が必要な証明書の数と状況をリクエストに記載してください。できる限り早くアカウントを更新します。

  3. 次の手順に進みます。