HSTSの説明資料

なんかで作ったので

HSTSとは

HTTPでの通信を減らしよりセキュアなHTTPSを使うように促す仕組み

通常

通常HTTPリクエストをして、301、302等のリダイレクトによってHTTPSにアクセスし直す
が、HTTPでのやりとり部分に中間者攻撃のリスクが存在する

※厳密には301リダイレクトはブラウザがキャッシュするので2回目以降はサーバー側にリクエストしない

HSTS ヘッダ

HSTSヘッダを受け取ると、ブラウザ側でHTTPをHTTPSに読み替えてリクエストする
通常のリダイレクトは違い、一旦 HSTSヘッダを受け取ると有効期間中は決してhttpによるリクエストをしない
(http:// ~ というリンクはブラウザ側で読み換える)

付与するヘッダーは以下のようなもの

strict-transport-security: max-age=31536000; includeSubDomains; preload
  • max-age: 有効時間(秒単位)
  • includeSubDomains: サブドメインも含めるかどうか alis.to なら hoge.alis.to も有効になる
  • preload: preloadに登録しても良いかどうか(後述)

HSTS preload

HSTS preloadは予め hstspreload.org に自分のサイトを登録しておいて
初回リクエスト時からHTTPSを有効にしておく仕組み

メリット・デメリット

  • メリット
    • observatory の点数アップ (対外アピール)
    • 盗聴・中間者攻撃リスクを軽減しよりセキュアになる
  • デメリット
    • 証明書の運用を失敗できない
    • サブドメインを含め、HTTPでの運用を一切できなくなる
    • ローカルでのテスト時に偽の証明書を無視しにくくなる

通常だと出てくる証明書エラー無視のリンクが・・・

HSTSのサイトは証明書無視ボタンが出ない

windowsだとやり方があるらしいが、ローカルでの確認とかはやりにくくなる
/etc/hostsを化かして対応する、実ドメインでのリハーサル時はプライベートCA等で対応すること