Fastly で HSTS を有効にする

HTTP Strict Transport Security (HSTS) によるセキュリティの強化仕様は、現代のブラウザに TLS (トランスポート・レイヤー・セキュリティ) プロトコルのみによる通信を強制する方法を提供します。HSTS 有効後、すでにアクセス済みの HTTPS URL であれば、HSTS によってブラウザはその URL にリダイレクトされます (ステータスコードは通常307)。例えば http://www.example.com がリクエストされると、https://www.example.com がすでにに一度アクセスされている場合、強制的に https://www.example.com にリダイレクトされます。

前提条件

これらの手順は、Fastly で TLS サービスが設定済みであることを前提としています。

TLS の強制と HSTS の有効化

TLS を強制的に使用し、HSTS を有効にするには、以下の手順に従ってください。

  1. Fastly コントロールパネルにログインします。
  2. All services ページから、該当するサービスを選択します。検索ボックスを使用して ID、名前、またはドメインで検索することができます。
  3. Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
  4. Settings をクリックします。Settings ページが表示されます。
  5. 条件なしのリクエスト設定で Force TLS が有効になっている場合、VCL のロジックで競合が発生する可能性があります。既存のリクエスト設定を削除するか、条件を追加して修正してください。
  6. Force TLS and enable HSTS スイッチをクリックし、サービスにて TLS を強制し、HSTS を有効にします。

    新たな HSTS 設定

    TLS を強制するためのリクエスト設定と HSTS を有効にするヘッダーが自動的に作成されます。

  7. Activate ボタンをクリックして設定変更をデプロイします。

手動で HSTS を有効化する

追加の HSTS オプションを設定したい場合は、次のように新規ヘッダーを追加し、手動で HSTS を有効化する必要があります。

  1. TLS リダイレクトの強制の指示に従って、暗号化されていないリクエストに TLS を強制適用します。
  2. Content をクリックします。Content ページが表示されます。
  3. Create header ボタンをクリックして新規ヘッダーを作成します。Create a header ページが表示されます。

    新しいヘッダーウィンドウにて HSTS 設定が表示される

  4. 以下の要領で Create a header ページの各フィールドに入力します。
    • Name フィールドに、HSTS などの人間可読の名前を入力します。この名前は、Fastly コントロールパネルに表示されます。
    • Type メニューから Response を選択し、Action メニューから Set を選択します。
    • Destination フィールドに http.Strict-Transport-Security と入力します。
    • Source フィールドに "max-age=<max age in seconds>" と入力します。例:"max-age=31536000"。後述するように、max-age は必須です。また、HSTS オプションを2つ追加指定することができます。
    • Ignore if set メニューと Priority フィールドの設定はデフォルトのままにしておきます (または、お客様のサービスに合わせて適切に設定してください)。
  5. Create ボタンをクリックします。
  6. Activate ボタンをクリックして設定変更をデプロイします。

HSTS のオプション

HSTS ヘッダーを手動で設定した場合は、追加の HSTS オプションを指定することができます。

HSTS が正常に機能するためには、max-age ディレクティブの設定が必要です。現在のドメインが HTTPS のみでアクセス可能であることを記憶する時間を秒単位で指定します。上記の例は、max-age を1年に設定しています (31,536,000秒 = 1年)。例示の値よりも小さな値で試してみるとよいでしょう。

HSTS レスポンスヘッダーでは2つの追加オプションを指定できます。

  • includeSubdomains - このトークンは、お客様のサイトのすべてのサブドメインに HSTS を適用します。これを追加する前に、お客様のサブドメインの中にブラウザから HTTP の機能を要求されるものがないことを確認してください。TLS 証明書がワイルドカードであること、または存在し得るすべてのサブドメインをカバーしていることを確認してください。

  • preload- このトークンを使用すると、主要ブラウザにプリロードされた HSTS リストにお客様のドメインを登録することができます。このトークンは HSTS の仕様に含まれませんが、ヘッダーにトークンを含めることは、このプリロードリストに登録するための前提条件です。

Source フィールドでこれらのオプションをすべて組み合わせると、次のようになります。

"Strict-Transport-Security: max-age=<max age in seconds>; includeSubDomains; preload"

何らかの理由で HSTS を無効にする必要がある場合は、HTTPS 接続の max-age0 に設定します。

Fastly で HSTS を有効にする HSTS プリロードリストは、Fastly ではなくサードパーティによって管理されています。 詳しくは https://hstspreload.org/ をご覧ください。

補足資料

Back to Top