【えいちえすてぃーえす】

HSTS とは?

最終更新:
💡 HTTPSで接続する方針を記憶させる

ブラウザーへ、そのサイトにはHTTPSで接続するよう記憶させる仕組み。リダイレクトとの違い、初回接続とpreloadの条件を解説します。

📌 このページのポイント
ブラウザーが、HTTPSで接続する方針を記憶 ① 有効なHTTPSの応答で方針を受け取るブラウザーStrict-Transport-Securitymax-age:記憶する期間② 方針を知るブラウザーではhttp://example.test/https://example.test/HTTPで接続する前に、HTTPSへ置き換える方針を知らない初回接続は、別に考えるpreloadは申請・ブラウザーへの反映が必要
example.testは説明用のドメインです。記憶前のHTTP接続を保護する図ではありません。適用範囲・証明書・preloadの長期運用条件も確認します。
ひよこ ひよこ
HSTSは、何をしてくれるの?
ペンギン先生 ペンギン先生
ブラウザーに、このサイトにはHTTPSで接続するという方針を記憶させるよ。記憶している間は、HTTPのURLを開こうとしても、接続前にHTTPSへ置き換えるんだ。
ひよこ ひよこ
HTTPSへのリダイレクトと同じ?
ペンギン先生 ペンギン先生
リダイレクトはHTTPでサーバーへ接続した後に、HTTPSへ移る案内を受け取る。HSTSを知っているブラウザーは、そのHTTP接続をする前に切り替える。この違いが大切だよ。
ひよこ ひよこ
初めて訪れたときも効く?
ペンギン先生 ペンギン先生
通常は、有効なHTTPSの応答でヘッダーを受け取ってから効くよ。方針をまだ知らずHTTPで初回接続する場合の弱点は残る。単に「2回目から」と決まるのではなく、ブラウザーが方針を知っているかで変わるんだ。
ひよこ ひよこ
どのくらい覚えているの?
ペンギン先生 ペンギン先生
max-ageで秒数を指定する。includeSubDomainsを付けると、そのドメインのサブドメインにも適用されるよ。HTTPだけで動くサブドメインがないかなど、範囲を確認する必要があるんだ。
ひよこ ひよこ
設定すれば、どんな攻撃も防げる?
ペンギン先生 ペンギン先生
防げる範囲は限定されるよ。HTTPへの切り下げを防ぐ助けになるが、サイトの内容や認証をすべて安全にするものではない。証明書の更新も必要で、証明書エラーが起きると利用者が警告を無視して進むこともできなくなるんだ。
もっと詳しく知りたい人へ

preloadを書けば、その場で初回接続も保護される?

ヘッダーに書くだけでは事前登録されず、条件を満たす申請とブラウザーへのリスト配布が必要です。公式サービスは現在、HSTSを推奨する一方、preloadを一般には推奨していません。登録・解除にも時間がかかるため、必要性とサブドメインを含む長期の運用への影響を確認します。

HTTPの応答でHSTSを送ってもよい?

ブラウザーは安全でないHTTP接続で受け取ったHSTSヘッダーを無視します。方針は有効なHTTPS接続で伝えます。期限やサブドメインの設定を変更するときも、既に記憶された方針の扱いを確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「HSTS」って出てきたら「ブラウザーにHTTPSで接続する方針を記憶させる仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「HTTP Strict Transport Security」 = HTTPの厳格な通信保護
💬 Strict-Transport-Securityという応答ヘッダーで、以後の接続にHTTPSを使う方針を伝えます。HSTS自体が通信を暗号化するわけではありません。

参考資料

← 用語集にもどる