メニュー
Amazon CloudFront
開発者ガイド (API Version 2016-09-29)

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

ビューワーに HTTPS とオブジェクトの代替ドメイン名を使用させる場合、CloudFront サーバーが HTTPS リクエストを供給する方法を選択する必要があります。代替ドメイン名を使用するように CloudFront を構成すると、CloudFront は、各エッジロケーションの専用 IP アドレスを使用するか、Server Name Indication (SNI) を使用して、HTTPS リクエストを供給できます。このセクションでは各オプションの仕組みについて説明します。

専用 IP アドレスを使用した HTTPS リクエストの供給 (すべてのクライアントで動作)

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

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

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

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

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

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

重要

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

SNI を使用した HTTPS リクエストの供給 (ほとんどのクライアントで動作)

Server Name Indication (SNI) を使用して HTTPS リクエストを供給するように CloudFront を構成した場合、CloudFront は各エッジロケーションの IP アドレスに代替ドメイン名を関連付けますが、その IP アドレスはお客様のディストリビューション専用ではありません。ビューワーがコンテンツに対して HTTPS リクエストを送信すると、DNS は、該当するエッジロケーションの IP アドレスにリクエストをルーティングします。ただし、IP アドレスがディストリビューション専用ではないため、CloudFront は、リクエストがどのドメイン用かを IP アドレスに基づいて決定することはできません。

SSL/TLS ネゴシエーションは、HTTPS 接続を確立する処理の非常に早い段階で実行されます。リクエストがどのドメイン向けかすぐに決定できない場合、CloudFront は接続を中断します。専用 IP アドレスを使用するのは、ドメインとリクエストを関連付ける 1 つの方法です。他には SNI があります。これは、ほとんどの最新ブラウザでサポートされている TLS プロトコルを拡張したものです。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 を構成します。

  • 独自証明書の代わりに CloudFront SSL/TLS 証明書を使用します。この場合、オブジェクトの URL でディストリビューションの CloudFront ドメイン名を使用する必要があります (たとえば、https://d111111abcdef8.cloudfront.net/logo.png)。

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

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

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

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