Hejdaの見る夢

一人前のエンジニアを目指して頑張ったこととかをつらつら書くブログ

HSTS で詰まったのと一時的な解決策を見つけた話

概要

若手の構築課題を作っている最中に、 HTTP Strict Transport Security (HSTS) の強制適用により http://{ドメイン} が Web ブラウザで表示出来ない( https にリダイレクトしてしまう )問題に出会いました

最終的には https://{ドメイン} にするけど、その過程でどうしても http://{ドメイン} を Web ブラウザで表示したかったので自分なりに回避策を調べました

HSTS とは

RFC 6797 で定義される、Web サイトが Web ブラウザに HTTPS でのアクセスを指示することで中間者攻撃を防止するための技術で、要は HTTP でアクセスしようとしても Web ブラウザ側で強制的に HTTPS に変換してしまうものです

参考: JPRS用語辞典|HSTS(エイチエスティーエス、Hypertext Strict Transport Security)

現在の主要な Web ブラウザ (Chrome, Firefox, Opera, Safari, IE 11 and Edge) は対応しています

参考: HSTS Preload List Submission

HSTS の回避方法

Web ブラウザの設定で回避する設定をすることが出来ます

例えば、 Google Chrome の場合は

  1. chrome://net-internals/#hsts にアクセス
  2. Delete domain security policies に HSTS を除外したいドメインを入れる
  3. Delete を実行

で、出来るとのことです

参考: httpで表示したいサイトがhttpsにリダイレクトされ、サイトが表示できない - Google Chrome Community

ただし、今回はこれでもダメな場合の話です\(^o^)/

HSTS は全てのドメインに適用されているわけでは無い

そもそもの話ですが、 HSTS はすべてのドメインで適用になっている訳ではないので、まだ HSTS が強制適用されていないドメインを使えば HSTS を回避出来ます

  • 2023/11 時点ですでに強制適用されているドメイン
    • appdev
  • 2023/11 時点では HSTS が強制適用されていないドメイン
    • jporg

つまり、 hogehoge.jp とか fizzbuzz.org などのドメインならまだドメインを HTTP で運用可能です

fizzbuzz.org などは、お名前ドットコムで1年間1000円くらいから購入出来るので比較的にリーズナブルに運用が可能です

ただし、これは 2023/11 時点の話であり、いつ上記のドメインの HSTS が強制適用になるかは不明です

HSTS が強制適用されるか確認できるサイト

以下のサイトで自分で調べることが出来ます

hstspreload.org

HSTS が強制適用される場合

https://hstspreload.org/?domain=app

HSTS が強制適用されない場合

https://hstspreload.org/?domain=jp

まとめ

HSTS 自体はセキュリティを高めるための必須な仕様なので、それに準じた構築を心がけましょう :)

とはいえ、例外的に HTTP を使いたい時はあるので、HSTS 回避はあくまで一時的なものとしたほうがいいと思います ;)