CertH certH
このページの目次

HSTS 解説:max-age、preload、そして何が壊れるか

更新 2026-11-03 · 6 分で読めます

HSTS はサイトを到達不能にしうる唯一のセキュリティヘッダーです。所有者自身にとっても。そして同時に A+ の必須条件でもあります。この 2 つの事実の間の隔たりは、導入時の規律だけに懸かっています。

このヘッダーが実際にやっていること

Strict-Transport-Security は、今後 N 秒間このホストには HTTPS でしか接続してはいけない、とブラウザに伝えます。受け取った時点でブラウザは内部の http:// リンクを書き換え、証明書エラーの「続行」クリックを塞ぎ、平文 HTTP を完全に拒否します。しかもそれはリクエストが端末を出る前に行われます。

これが、リダイレクトでは防げないダウングレード攻撃を防げる理由です。リダイレクトは最初のリクエストを平文で送ってしまい、それはまさにネットワーク上の攻撃者が横取りしたいリクエストだからです。

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

max-age は取り消せないカウントダウン

max-age はクライアント側に保存されます。1 年を出したあとヘッダーを削除しても、それを見たブラウザは最大 1 年間 HTTPS を強制し続けます。サーバー側に止めるスイッチはありません。

CertH は 180 日(15552000 秒)を A+ のしきい値としています。1 年が本番での一般的な値です。180 日未満でも概要では HSTS 有効として扱いますが、A+ は解除されません。

includeSubDomains と preload は別々の判断

includeSubDomains はルールをすべてのサブドメインに広げます。HTTP しか話さないサブドメインが 1 つでもあると(社内ツール、旧管理画面、ステージング)、親ドメインを訪れた人にはそのサブドメインが開けなくなります。まず DNS を棚卸ししてください。

preload はさらに進んで、ドメインがブラウザ同梱のリストに埋め込まれ、初回訪問時、まだヘッダーを受け取る前からルールが適用されます。解除には数か月かかり、削除リストへの申請も必要です。ヘッダーが数か月安定するまでは preload を付けないでください。

  • •エラーページを含め、すべての HTTPS レスポンスでこのヘッダーを返す。ヘッダーのない 404 はブラウザに何も教えません。
  • •平文 HTTP で HSTS を送ってはいけない。仕様上ブラウザは無視するので、設定ミスのリダイレクトループはこの方法では直せません。
  • •includeSubDomains を付ける前に、サブドメインに HTTP のみのサービスがないか確認する。
  • •preload は最後に、max-age が 1 年で安定してから付ける。

何も壊さない導入方法

まず短い max-age で始め、間違いがすぐ期限切れになるようにします。max-age=300 です。1 週間そのままにして、壊れたサブドメインや混合コンテンツの報告を監視します。次に 1 日、1 か月、1 年と伸ばします。各段階は前のウィンドウ内で戻せる。それが「短く始める」ことの意味です。

もし壊れたら、直すべきは壊れたホストで HTTPS を正しく提供することであり、ヘッダーを削除することではありません。削除しても、すでに受け取った人には何の助けにもなりません。

FAQ

HSTS がないと減点されますか?

基礎点は下がりませんが、A+ が止まります。最高評価には max-age 180 日以上または preload 済みの HSTS が必要です。100 点満点でも、それがなければ A のままです。

すべてのサブドメインを所有していなくても HSTS は使えますか?

はい。includeSubDomains を付けなければ問題ありません。その場合ヘッダーは、それを返した正確なホストにだけ適用されます。

次に読む