Firefoxで、アクセスすると強制的に https のプロトコルでアクセスされてしまう症状が発生しました。
http://〇〇〇 をFirefoxのアドレスバーに入力しているのに、
なぜか https にリダイレクトされてしまう。
サーバー側の設定では、リダイレクトの設定は全く入れていないのにですよ。
http://〇〇〇
↓
https://〇〇〇
最初はキャッシュの影響なのかなと思い、時間が解決してくれるかもしれないと思っていたのですが、1ヵ月以上経過しても解決しない。
キャッシュ以外にも、履歴を削除したりしたのですが、やはり解決しない。
私はメインで使用しているブラウザは、Firefoxですので、Firefoxしか見ていないかったのですが、ひょっとして『Google Chrome』でも発生していたのかもしれません。
幸いなことに『Google Chrome』では、発生していなかったです。
検索してみると、私と同じような症状かもしれないという方がいらっしゃって、解決方法をWebページに掲載している方もいました。
HSTSという技術が絡んでいて、結果的には、解決しました。
ですが、思った以上に手こずったんです。
今後、再発した場合に備えて、忘れないように備忘録として、まとめて残しておくことにしました。
HSTSとは?
HSTS は、『HTTP Strict Transport Security』が略された言葉のようです。ウィキペディア より引用
HSTS - ウィキペディア
HTTP Strict Transport Security (エイチティーティーピー・ストリクト・トランスポート・セキュリティ、略称 HSTS)とは、WebサーバーがWebブラウザに対して、現在接続しているドメイン(サブドメインを含む場合もある)に対するアクセスにおいて、次回以降HTTPの代わりにHTTPSを使うように伝達するセキュリティ機構である。RFC 6797 で規定されている。
MDN のサイトでも紹介されています。
HTTP Strict Transport Security - Web セキュリティ | MDN
発生した症状
クライアントPCのOSは、Windows10Firefox のバージョン、58.0
サーバーは、レンタルサーバーのコアサーバー
Firefox で http://〇〇 にアクセスした場合に、このような表示が出てきます。
hsts が使用されているため、現在アクセスできません
今回、発生したWebサーバーは、Apache です。
Webサーバーは、Apache でも nginx でも発生するようです。
一旦、この症状が発生すると、http でアクセスしているのに、https に強制リダイレクトとなってしまう。
症状が発生した時の流れは、こうなっています。
1. 初めは、テスト用として、https のサーバーでWebサイトを構築して、Firefoxでアクセス。
https://〇〇〇 → 表示できていました。
2. その後、http のサーバーへ移転させた。
http://〇〇〇 → 表示できなくなった。
移転後のhttpサーバーは、SSLの設定ができないレンタルサーバーだった為、httpsの設定ができませんでした。
無料のレンタルサーバー(無料ホームページスペース)です。
原因は?
https → http のWebサーバーの設定を実行したことに原因があるようです。一度、https としての設定を確立させた後に、http へ設定変更したことで、httpsの情報が確立されてしまった。
https のHSTSキャッシュが、Firefoxに記録されて、キャッシュが効き続けてしまうようです。
最初から http の設定だけだと発生していなかったと思われます。
原因は、コアサーバー側で https の設定を有効にした後に、http のWebサーバーに移転させたことが原因と特定しました。
そこで調べた結果、HSTSのキャッシュを削除する必要があるということが分かってきました。
解決した方法
HSTSのキャッシュが削除できれば良いのですが、Firefoxでの解除・削除・無効化の方法が見つかりませんでした。そこで、一旦、正常だったコアサーバーに戻し、再移転することにしました。
1. https が使えるWebサーバーに移転
最初に表示できていた、コアサーバーに移転させて、https でアクセスできるようにしました。
https://〇〇〇 にアクセスして、正常にページが表示されるようにしました。
2. HSTSのキャッシュを無効化
HSTSの有効期限を0にして、無効化の処理を入れます。
.htaccess にHSTSの有効期限を無効にする情報を挿入しました。
.htaccess
Header always set Strict-Transport-Security "max-age=0"
一旦、https://〇〇〇 にリダイレクトされるのですが、次からはキャッシュが無効になっているので、
http://〇〇〇 で正常にアクセスできるようにしました。
3. http のWebサーバーへ移転
運用予定の http のWebサーバーへ移転させました。
これで、HSTSのキャッシュが無効になっているので、移転させても問題なく
http://〇〇〇 でアクセス可能になりました。
今回は、本格的に運用するWebサイトでなかった為、簡単に移転ができたのですが、運用中のWebサイトだと、サーバーを移転させることは難しくなってくると思います。
一度、https にしたサイトを http で運用することは、滅多にないことでしょうが、今回は、Firefox にキャッシュされたHSTSの情報を無効化することで解決することができました。
まとめ
今回、私は仕組みを理解する為に、元のサーバーに戻すということをしましたが、移転か難しい場合は、ブラウザの「再インストールの方が良いかもしれない」と感じました。
Firefox と Google Chrome には、ポータブル(Portable)版もありますので、症状が解決できない時には、ポータブル版で確認してみるのも良い方法かもしれません。
ポータブル版のFirefox
Mozilla Firefox, Portable Edition
ポータブル版のGoogle Chrome
Google Chrome Portable
about:config の browser.fixup.fallback-to-https を false
返信削除