HSTS ポリシー作成 & 検証ツール | preload リスト要件まで一画面で判定
max-age・includeSubDomains・preload を選ぶだけで Strict-Transport-Security ヘッダ文字列を組み立て、HSTS preload リスト登録の必須要件 5 項目を同じ画面で PASS / FAIL / WARN 判定する開発者向けツール。
💡 このツールについて
HTTP Strict Transport Security (HSTS) は、ブラウザに「このドメインは常に HTTPS で接続せよ」と指示するレスポンスヘッダです。設定自体は 1 行ですが、つまずきやすいのは preload リストへの登録要件です。Chromium プロジェクトが管理する preload リストに自社ドメインを載せると、ブラウザ出荷時点から HTTPS が強制されますが、登録には max-age が 1 年 (31536000 秒) 以上、includeSubDomains 指定、preload ディレクティブの 3 条件がそろっている必要があります。
要件を満たさないヘッダで申請すると hstspreload.org で却下され、修正と再申請で時間を浪費します。逆に、要件を理解しないまま preload を付けてしまうと、サブドメインを含む全配下が HTTPS 必須になり、社内ツールや古いサブドメインが到達不能になる事故も起こります。このツールは、ヘッダの組み立てと preload 要件チェックを横並びにすることで、申請前に「今のヘッダが要件を満たしているか」「危険な組み合わせ (max-age=0 と preload の併用など) になっていないか」を手元で確認できます。
max-age は 0 (無効化)・5 分・1 日・1 週・30 日・180 日・1 年・2 年のプリセットを用意。本番投入前の検証では 5 分程度の短い値から始め、段階的に伸ばす運用が安全です。
🧐 よくあるご質問
Q. preload リストに必要な max-age の最低値は? A. 申請要件は 31536000 秒 (1 年) 以上です。チェックリストの「max-age が 31536000 秒以上」が PASS になっているか確認してください。180 日 (15552000 秒) は申請要件の 1 年に届かないため、preload 申請には使えません。
Q. max-age=0 を指定すると何が起きますか?
A. ブラウザに保存済みの HSTS ポリシーを解除する意味になります。HSTS をやめたいときに使いますが、preload と同時に指定すると矛盾するため、チェックリストで FAIL になります。
Q. includeSubDomains を付けると何に影響しますか? A. ルートドメインだけでなく、すべてのサブドメインに HSTS が適用されます。preload 登録には必須ですが、HTTPS 化していないサブドメインがあると到達不能になるため、付ける前に配下を棚卸ししてください。
Q. 一度 preload 登録したら取り消せますか? A. 削除申請は可能ですが、ブラウザ側のキャッシュが更新されるまで数か月かかります。preload は「実質的に巻き戻せない」前提で判断してください。
Q. 段階的に max-age を伸ばす意味は? A. 短い値で始めれば、誤設定に気づいたときのロールバックコストが小さくて済みます。5 分 → 1 日 → 1 週 → 1 か月 → 1 年と伸ばす運用が定番です。
📚 豆知識
HSTS の仕様は RFC 6797 で定義されていますが、preload リストの仕組み自体は RFC には含まれず、Chromium プロジェクトの公開ポリシー (hstspreload.org) として運用されています。つまり HSTS ヘッダは標準仕様、preload はブラウザベンダー主導の追加レイヤという二層構造です。
このリストは Chrome だけでなく Firefox・Safari・Edge も取り込んでいるため、1 つのリストへの登録が主要ブラウザ全体に波及します。ドメインを新規取得した直後に preload 登録しておくと、過去に HTTP で運用された痕跡がない状態から HTTPS 強制を始められる、という運用テクニックも知られています。