なんかで作ったので
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等で対応すること