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 から自動的にドメイン名を取得し、リクエストヘッダーのフィールドに追加します。

  2. CloudFront は、リクエストを受け取ると、リクエストヘッダーのドメイン名を見つけて、該当する SSL/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 リクエストで機能します。

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. 次の手順に進みます。