LoginSignup
1
2

More than 3 years have passed since last update.

「明示的にポート番号を指定したhttpアクセス」をしたいのにhttpsへのアクセスに自動的に切り替わって悩んだ(HTTP Strict Transport Security(HSTS)有効化に伴う影響)

Last updated at Posted at 2019-05-16

自分用のメモ。

事象

原因

サイト1.で、HTTP Strict Transport Security (HSTS) が有効になっていたため。
(「事象が起こっているサイト(サイト2)」ではなく、サイト1.の方に原因があり、すぐには気付けなかった。)

HTTPで"80"以外のポート番号を明示的に指定した場合、意図的にポート番号を保持する("80"の場合は"443"に置き換える)こと、それによって、実はHTTPSへの切り替えが間違いの場合があることも含めて、HSTSの設計時より想定されていた挙動のようである。(RFC6797 の 8.3 および Appendix A.6 を参照のこと。)

解決

サーバ側およびクライアント側の双方で対応が必要。
(尚、サイト2.のHTTPS化については、今後の課題。)

サーバ側

 サイト1.のHTTP Server にて、HSTSのレスポンスヘッダにおいて、max-age に0に指定1

Strict-Transport-Security: max-age=0

HSTSのヘッダを削除する方法ではないことに注意。今回の事象が発生した場合、既に、クライアント側のHSTSキャッシュが使われている可能性があり、サーバ側上記手順とクライアント側の手順とを合わせて実施することで、クライアントの「次回」アクセス時に、そのキャッシュが使われないようになる。

クライアント側

サーバ側で上記対応後、サイト1.にアクセスする2

[参考資料]

httpでアクセスしたいのにhttpsへリダイレクトされて悩んだ(HSTSまたはStrict-Transport-Securityの沼)
Strict-Transport-Securityヘッダ(HSTS)のキャッシュを無効化する方法
HSTSとは?推奨される理由とプリロードリスト登録方法
RFC6797 - HTTP Strict Transport Security (HSTS)


  1. 今回は includeSubDomains は指定しなかったが(サブドメインでサービスを提供していないことが明らかであったため)、HSTSのプリロードリストに登録するは includeSubDomains が必要のようだ。詳細は参考資料などに譲る。 

  2.  尚、ブラウザの種類によっては、当該ドメインのHSTSキャッシュを直接削除することもできるようだ。詳細は参考資料などに譲る。 

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2