Fastly で HSTS を有効にする

HTTP Strict Transport Security(HSTS)セキュリティ拡張仕様は、最新のブラウザがTransport Layer Security(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. Home ページから、適切なサービスを選択します。検索ボックスで 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 を有効化する必要があります。

TLS の強制と HSTS の有効化の指示に従った場合は、Force TLS and enable 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 オプションを指定することができます。

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 に設定します。

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

補足資料

Back to Top