Amazon CloudFront
開発者ガイド (API バージョン 2016-09-29)

CloudFront で HTTPS リクエストを供給する方法の選択

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

  • Server Name Indication (SNI) を使用する - 推奨

  • 各エッジロケーションの専用 IP アドレスを使用する

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

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 料金表を参照してください。また、複数の CloudFront ディストリビューションに同じ証明書を使用する も参照してください。

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

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

  2. CloudFront は IP アドレスを使用してディストリビューションを特定し、どの SSL/TLS 証明書をビューワーに返すかを決定します。

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

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

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