Help us understand the problem. What is going on with this article?

HTTP Strict Transport Security

More than 1 year has passed since last update.

事象

HTTPS の Web サイトを切り替えのため、一時的に HTTPS でのアクセスを遮断。

いったん HTTP でのアクセスを確認した後、 HTTPS でアクセスできるか確かめようとしたところ、 Chrome から見たときに HTTP でアクセスしようとしても、すぐに HTTPS にリダイレクト(?)される事象が発生。

なお、サーバ側では HTTP から HTTPS へのリダイレクトは設定していない。

原因

原因は HTTP Strict Transport Security (HSTS) という仕様によるものだった。

一度でも HTTPS でアクセスして、その時の Response header に Strict-Transport-Security を以下のように付けて返した場合、対象サイトへのアクセスは以降、必ず HTTPS で行われるようになる。 (HTTP で行えなくなる)

Strict-Transport-Security: max-age=31536000; includeSubDomains

ユーザの預かり知らぬうちに不意に HTTP に切り替わっていて、重要な情報が盗み見されることを防ぐのに有効な仕様で、もはや時代は HTTPS 必須化なので、あるべき仕様と言えます。

TIPS

少なくとも Chrome の場合は、 HSTS の対象となったドメインを内部的に記録している。 (仕様的にはそうでないと実現できない)

もし手動でこの情報を編集したい場合は、以下のページから行う。

chrome://net-internals/#hsts

[Delete domain security policies] を実行することで、この制約を解除して、 HTTP でアクセス可能になる。(それでも消えない場合は、ブラウザ閲覧履歴を消す)

なお、 HSTS preload list という RFC 6797 には定義されていない仕様もあり、このリストに入ったサイトは、上記の [Delete domain security policies] でも制約を削除できない。
HSTS preload list は予め、サイトのドメインを登録フォームから登録しておくことで、チェックを通ったものは、 Chrome (および、その他のモダンブラウザ) にハードコードで HSTS の対象として追加され、数カ月後にリリースされたバージョンから反映されるようになる、というものである。

References

tearoom6
blog も書いてます。 https://tearoom6.hateblo.jp/
https://tearoom6.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away