🔒 HSTSヘッダー生成

生成されたヘッダー
Strict-Transport-Security: max-age=31536000; includeSubDomains

ブラウザに対してこのサイトへは常にHTTPSで接続するよう指示するStrict-Transport-Security(HSTS)ヘッダーを、有効期間(max-age)やincludeSubDomains・preloadオプションを設定して組み立てるツールです。

使い方

  1. 有効期間(max-age、秒単位)を入力します。
  2. サブドメインにも適用する場合はincludeSubDomainsを、ブラウザのpreloadリストに登録申請する場合はpreloadを有効にします。
  3. 組み立てられたHSTSヘッダー文字列が自動的に表示されます。

計算の仕組み

Strict-Transport-Security(HSTS)は RFC 6797 で定義されたHTTPレスポンスヘッダーで、「このサイトには今後かならずHTTPSで接続すること」をブラウザに指示します。 一度このヘッダーを受け取ったブラウザは、指定された期間中、そのドメインに対する http:// でのアクセスを、サーバーに問い合わせる前に自分の判断で https:// へ書き換えます。これが重要なのは、最初のHTTPリクエストが攻撃者に傍受・改ざんされる「SSLストリッピング」を防げるためです。サーバー側のリダイレクト設定だけでは、リダイレクトを受け取る前の最初の1往復が平文のまま残ります。 max-age はこの指示を記憶する秒数です。includeSubDomains を付けると、そのドメインのすべてのサブドメインにも同じ規則が適用されます。preload は、主要ブラウザに組み込まれた「最初のアクセスからHTTPSを強制するドメイン一覧」への登録を意図することを示すもので、RFC 6797 自体には含まれないブラウザベンダー側の仕組みです。

計算例

有効期間を1年、サブドメインにも適用する設定の場合 Strict-Transport-Security: max-age=31536000; includeSubDomains 31536000秒 = 60 × 60 × 24 × 365 で、ちょうど1年です。このヘッダーを受け取ったブラウザは、以後1年間、example.com とそのすべてのサブドメインへの接続を自動的にHTTPSに切り替えます。有効期間はアクセスのたびに更新されるため、定期的に訪問するユーザーの保護は途切れません。 まず短い値で試す場合は max-age=600(10分)のように設定し、問題がないことを確認してから期間を延ばす方法が一般的です。

使用上の注意

  • HSTSを設定する前に、サイト全体(サブドメインを含む)がHTTPSで正しく動作することを必ず確認してください。HTTPでしか提供していないページがあると、max-ageの期間中アクセスできなくなります。
  • includeSubDomains は、まだHTTPS化していないサブドメインにも一律で適用されます。社内向けサブドメインなどを見落とさないよう注意してください。
  • preload リストへの登録は別途申請が必要で、登録後の解除には時間がかかります。一度登録すると短期間で元に戻すことはできません。
  • HSTSヘッダーはHTTPS接続で送信された場合にのみ有効です。HTTP接続で送っても、ブラウザは仕様どおり無視します。

よくある質問

Strict-Transport-Securityとは何ですか?

RFC 6797で定義されたHTTPレスポンスヘッダーで、一度受信したブラウザは指定期間、そのサイトへのすべての接続を自動的にHTTPSへ切り替えるようになります。中間者攻撃によるHTTPへのダウングレードを防ぎます。

max-ageの値は何を指定すればよいですか?

ブラウザがこの設定を記憶しておく秒数です。一般的には31536000(1年)がよく使われますが、まずは短い値でテストし、問題がなければ徐々に延ばすことが推奨されます。

preloadオプションを有効にするとどうなりますか?

preloadは、主要ブラウザに組み込まれたHSTSプリロードリストへの登録を意図したオプションです。登録されると初回アクセス時からHTTPSが強制されますが、登録には別途申請と審査が必要で、登録後の解除には時間がかかる点に注意してください。