HTTP Strict Transport Security (HSTS) は、ブラウザに対し、ドメインへの接続を HTTPS のみで行うよう指示します。ブラウザが HSTS ヘッダーを受信すると、その後のすべての HTTP リクエストを 307 Internal Redirect を介してローカルで HTTPS にアップグレードします。これにより、余分なサーバーラウンドトリップが排除され、ダウングレード攻撃の機会がなくなります。
プラグインタイプ: スロットリング
仕組み
HSTS プラグインは、ゲートウェイからのすべての HTTPS レスポンスに Strict-Transport-Security レスポンスヘッダーを追加します。ブラウザがこのヘッダーをキャッシュすると、ブラウザから送信される前に、そのドメインへのすべての HTTP リクエストを自動的に HTTPS リクエストに変換します。
これは、サーバー側 HTTPS リダイレクト (301 または 302) とは次の2つの点で異なります。
余分なラウンドトリップがない。 ブラウザはリクエストをローカルでアップグレードするため、ユーザーが暗号化されていない HTTP リクエストにさらされることはありません。
ダウングレード攻撃からの保護。 ブラウザは HTTP リクエストを送信しないため、攻撃者がユーザーを傍受して悪意のあるサイトにリダイレクトすることはできません。
このプラグインは、Strict-Transport-Security ヘッダーを HTTPS レスポンスにのみ追加します。HTTP レスポンスにはこのヘッダーは含まれず、これは RFC 6797 で定義されている動作に準拠しています。
前提条件
HSTS プラグインを有効にする前に、以下を確認してください。
Microservices Engine (MSE) クラウドネイティブゲートウェイで、ご利用のドメインに対して有効な TLS/SSL 証明書が設定されていること。
ポリシーが適用されるすべてのドメインとサブドメインで HTTPS が有効化され、検証されていること。
HSTS がアクティブになると、ブラウザは max_age の期間中、HTTP 接続を拒否します。ポリシーがキャッシュされている間に HTTPS を無効にしたり、TLS 証明書の有効期限が切れたりすると、ポリシーの有効期限が切れるまで、ご利用のドメインは再訪問者からアクセスできなくなります。max_age の全期間にわたって HTTPS を稼働状態に保ってください。
設定フィールド
| フィールド | タイプ | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
max_age | 数値 | いいえ | 15724800 (約182日) | ブラウザがドメインへの HTTPS のみの接続を強制する期間 (秒単位)。 |
include_sub_domains | ブール値 | いいえ | false | true に設定すると、HSTS ポリシーがドメインとそのすべてのサブドメインに適用されます。 |
設定例
{
"max_age": 31536000,
"include_sub_domains": true
}この設定は、ドメインとすべてのサブドメインに対して1年間 (31,536,000秒) HTTPS を強制します。
本番環境へのデプロイ
テスト用に短い
max_ageから開始する。max_ageを小さい値 (例: 5分間の300) に設定します。期間を延長する前に、すべてのページが HTTPS 経由で正しくロードされることを確認してください。include_sub_domainsを有効にする前に、サブドメインの HTTPS サポートを確認する。include_sub_domainsがtrueの場合、すべてのサブドメインに有効な TLS 証明書が必要です。HTTPS がないサブドメインは、HSTS ポリシーをキャッシュしたブラウザからアクセスできなくなります。HSTS がアクティブな間は HTTPS を無効にしない。
Strict-Transport-Securityヘッダーをキャッシュしたブラウザは、max_ageの期間中、HTTP 接続を拒否します。この期間中に HTTPS を削除すると、再訪問者はロックアウトされます。