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

ビューワーと CloudFront との通信で HTTPS を必須にする

CloudFront ディストリビューション内で 1 つ以上のキャッシュ動作を設定して、ビューワーと CloudFront との通信で HTTPS を必須にできます。また、1 つ以上のキャッシュ動作で HTTP と HTTPS の両方を許可するように構成して、CloudFront における一部のオブジェクトで HTTPS を必須にすることもできます。設定手順はオブジェクト URL 内で使用しているドメイン名によって異なります。

  • CloudFront がディストリビューションに割り当てたドメイン名を使用している場合 (d111111abcdef8.cloudfront.net など)、1 つ以上のキャッシュ動作の [Viewer Protocol Policy] 設定を変更して、HTTPS 通信を必須にします。この設定で、CloudFront は SSL/TLS 証明書を提供します。

    CloudFront コンソールを使用して [Viewer Protocol Policy] の値を変更するには、このセクションで後述する手順を参照してください。

    CloudFront API を使用して ViewerProtocolPolicy 要素の値を変更する方法については、Amazon CloudFront API リファレンス の「UpdateDistribution」を参照してください。

  • 独自のドメイン名 (example.com など) を使用している場合、CloudFront のいくつかの設定を変更する必要があります。また、AWS Certificate Manager (ACM) が提供する SSL/TLS 証明書を使用するか、サードパーティー認証機関からの証明書を ACM または IAM 証明書ストアにインポートするか、自己署名した証明書を作成しインポートする必要があります。詳細については、「代替ドメイン名と HTTPS の使用」を参照してください。

注記

ビューワーが CloudFront から取得するオブジェクトに関して、CloudFront がそのオブジェクトをオリジンから取得した段階で暗号化されていることを保証するには、CloudFront とオリジンとの間で必ず HTTPS を使用します。最近になって CloudFront とオリジンとの間で HTTP から HTTPS に変更した場合、CloudFront エッジロケーションのオブジェクトを無効にすることをお勧めします。CloudFront は、ビューワーが使用しているプロトコル (HTTP または HTTPS) について、CloudFront がオブジェクトを取得するのに使用したプロトコルと一致するかどうかに関係なく、オブジェクトをビューワーに返します。ディストリビューション内のオブジェクトの削除または置き換えの詳細については、「CloudFront が配信するコンテンツの追加、削除、または置き換え」を参照してください。

1 つ以上のキャッシュ動作でビューワーと CloudFront との間で HTTPS を必須にするには、次の手順を実行します。

ビューワーと CloudFront との間で HTTPS が必須になるよう CloudFront を設定する

  1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にある、CloudFront コンソールを開きます。

  2. CloudFront コンソールの上部のペインで、更新するディストリビューションの ID を選択します。

  3. [Behaviors] タブで、更新するキャッシュ動作を選択した後、[Edit] を選択します。

  4. [Viewer Protocol Policy] として次のいずれかの値を指定します。

    Redirect HTTP to HTTPS

    ビューワーは両方のプロトコルを使用できます。HTTP GET および HEAD リクエストは自動的に HTTPS リクエストにリダイレクトされます。CloudFront は新しい HTTPS URL とともに HTTP ステータスコード 301 (Moved Permanently) を返します。ビューワーはこの HTTPS URL を使用して CloudFront にリクエストを再送信します。

    重要

    POSTPUTDELETEOPTIONSPATCH を HTTP 経由で HTTP から HTTPS キャッシュ動作にして HTTP 1.1 以上のリクエストプロトコルバージョンで送信すると、CloudFront はそのリクエストを HTTP ステータスコード 307 (Temporary Redirect) で HTTPS の場所にリダイレクトします。これはリクエストが同じメソッドと本文ペイロードを使用して新しい場所に再度送信されることを保証するものです。

    POSTPUTDELETEOPTIONSPATCH のリクエストを HTTP 経由で HTTPS キャッシュ動作にして HTTP 1.1 未満のリクエストプロトコルバージョンで送信すると、CloudFront は HTTP ステータスコード 403 (Forbidden) を返します。

    HTTPS リクエストにリダイレクトされる HTTP リクエストをビューワーが作成すると、CloudFront は両方のリクエストに課金します。HTTP リクエストの場合、リクエストの料金と、CloudFront がビューワーに返すヘッダーの料金のみが課金されます。HTTPS リクエストの場合、リクエストの料金と、オリジンが返すヘッダーとオブジェクトの料金が課金されます。

    HTTPS Only

    ビューワーは、HTTPS を使用している場合にのみ、コンテンツにアクセスできます。ビューワーが HTTPS リクエストではなく HTTP リクエストを送信した場合、CloudFront は HTTP ステータスコード 403 (Forbidden) を返し、オブジェクトは返しません。

  5. [Yes, Edit (はい、編集します)] を選択します。

  6. ビューワーと CloudFront との間で HTTPS を必須にする追加のキャッシュ動作ごとに、ステップ 3 から 5 を繰り返します。

  7. 本番環境で更新された情報を使用する前に、次を確認してください。

    • ビューワーに HTTPS の使用が必要とされるリクエストにのみ、各キャッシュ動作のパスパターンが適用されている。

    • CloudFront が評価する順番にキャッシュ動作がリストされている。詳細については、「パスパターン」を参照してください。

    • キャッシュ動作は、リクエストを正しいオリジンにルーティングします。