Fastly で HSTS を有効にする
最終更新日 2020-11-20
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
へリダイレクトされます。
注意
HSTS は、サイトが信頼された HTTPS 接続でアクセスされて初めて有効になるため、TLS の強制と HSTS の有効化をお勧めします。HSTS を自動で有効にしたくない場合は、TLS のリダイレクトを設定した後に手動で HSTS を有効化することもできます。
前提条件
これらの手順は、Fastly で TLS サービスが設定済みであることを前提としています。
TLS の強制と HSTS の有効化
TLS を強制的に使用し、HSTS を有効にするには、以下の手順に従ってください。
注意
以前のバージョンの Force TLS オプションを使用して有効にしたサービスでは、一時的に古いテスト期間が表示されることがあります。推奨される新しいテスト期間を選択すると、この古いオプションは表示されなくなります。
- Fastly コントロールパネルにログインします。
- Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
- Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
- Settings をクリックします。
注意
条件なしのリクエスト設定で Force TLS が有効になっている場合、VCL のロジックで競合が発生する可能性があります。既存のリクエスト設定を削除するか、条件を追加して修正してください。
Force TLS and enable HSTS スイッチをクリックし、サービスにて TLS を強制し、HSTS を有効にします。
TLS を強制するためのリクエスト設定と HSTS を有効にするヘッダーが自動的に作成されます。
- Activate をクリックして設定への変更をデプロイします。
警告
この設定をホストの上書き設定と一緒に有効にすると、問題が発生することがあります。ホストの上書き設定を有効にする代わりに、新しいリクエスト設定を作成し、詳細オプションでホストの上書きを指示します。
手動で HSTS を有効化する
追加の HSTS オプションを設定したい場合は、次のように新規ヘッダーを追加し、手動で HSTS を有効化する必要があります。
注意
前のセクションの指示に従った場合は、TLS の強制と HSTS の有効化 スイッチをクリックし、自動作成されたリクエスト設定とヘッダーを削除します。
TLS リダイレクトの強制手順に従って、暗号化されていないリクエストを TLS への強制的に設定してください。
- Content をクリックします。
Create header をクリックします。
以下の要領では、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 フィールドの設定はデフォルトのままにしておきます (または、お客様のサービスに合わせて適切に設定してください)。
- Create をクリックします。
- Activate をクリックして設定への変更をデプロイします。
HSTS のオプション
HSTS ヘッダーを手動でHSTS を有効化した場合は、追加の HSTS オプションを指定することができます。
HSTS では、正しく機能するために max-age ディレクティブを設定する必要があります。現在のドメインが HTTPS のみでアクセス可能であることを記憶する時間を秒単位で指定します。上記の例は、max-age
を1年に設定しています (31,536,000秒 = 1年)。例示の値よりも小さな値で試してみるとよいでしょう。
HSTS レスポンスヘッダーでは2つの追加オプションを指定できます。
includeSubdomains
- このトークンは、お客様のサイトのすべてのサブドメインに HSTS を適用します。これを追加する前に、お客様のサブドメインの中にブラウザから HTTP の機能を要求されるものがないことを確認してください。TLS 証明書がワイルドカードであること、または存在し得るすべてのサブドメインをカバーしていることを確認してください。
重要
includeSubdomains
が有効になると、HSTS ヘッダーを読み込んだブラウザは、すべてのサブドメインに HTTP でアクセスできなくなります。
preload
- このトークンを使用すると、主要ブラウザにプリロードされた HSTS リストにお客様のドメインを登録することができます。このトークンは HSTS の仕様に含まれませんが、ヘッダーにトークンを含めることは、このプリロードリストに登録するための前提条件です。
警告
HTTPS の長期的なサポートが確実ではない場合は、ブラウザにプリロードの追加を要求しないでください。HSTS プリロードリストへの追加は簡単に取り消すことができません。登録手順および詳細については、https://hstspreload.org/ を参照してください。
Source フィールドでこれらのオプションをすべて組み合わせると、次のようになります。
"Strict-Transport-Security: max-age=<max age in seconds>; includeSubDomains; preload"
何らかの理由で HSTS を無効にする必要がある場合は、HTTPS 接続の max-age
を 0
に設定します。
HSTS プリロードリストは、Fastly ではなくサードパーティによって管理されています。詳細については、https://hstspreload.org/ をご確認ください。
補足資料
- RFC 6797 - HSTS の仕様を掲載
- HSTS に関する Wikipedia の解説 - 現時点での既知の制限と対応ブラウザ一覧など
- HSTS 関する OWASP.org の解説 - OWASP が対処する脅威の説明など
- Chromium Projects の解説 - HSTS と HSTS サイトのプリロードについて
翻訳についての注意事項
このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシーと利用規約が適用されます。