mkcertをアンインストールしたら、localhostがhttpsから戻らなくなった問題(HTST)

mkcertをアンインストールすると、http://localhost:8080が勝手にhttps://localhost:8080にリダイレクトしてしまう。原因はHTST(HTTP Strict Transport Security)

先日、ローカルの開発環境でもSSLで検証して、Let's encryptもcronで定期的に更新して、やった感出したかったんですが、色々問題があって今回アンインストールしました。

以前の記事:

問題点1

テストしているlocalhostをIP指定でモバイルでも検証できるよう開発環境を準備しているのですが、このmkcertを設定してしまうと、モバイルでもCertificationを求められるようになるので、どうするか途方に暮れてしまった。

問題点2

こちらの方が影響が大きいかもしれませんが、他のプロジェクトも同様にlocalhostでのアクセスはSSL接続になってしまいます。もしSSL接続を設定するようWebpack-Dev-Serverなどに設定を施していない場合はやっぱり、接続ができなくなります。

こんな感じで、これらの障壁に比べて特に不都合があるわけでもないのにローカルで自己著名証明書を発行して、HTTPS接続を利用可能にする理由を見失ってきたので、アンインストールすることにしました。


アンインストール

mkcertのサイトでアンインストール方法がないで紹介します。

MacBook-Pro ~ % mkcert -uninstall

これでシステムからキーファイルと、CERTファイルも削除されます。 これでアンインストールは完了しました。

ただし、実はこれだけでは終わりません。mkcertをインストールしたあと、Chromeでhttp接続するとhttpsへリダイレクトされてしまいます。


HTTPS接続を解除(リダイレクト)する方法

まずはchromeのHSTS設定のページへアクセスします。

chrome://net-internals/#hsts

ここでまず localhost がHSTSに登録されているか調べます。

screenshot 2020 01 16 12 11 21

Domainに localhost と入力してすでに登録されてないか調べます。もしここでdynamic_sts_domain:localhostが表示されたら、削除をしましょう。

screenshot 2020 01 16 12 39 35

画面一番下に Delete domain security policies がありますので、ここに localhost を入力して削除します。

以上で設定は完了です!


これはブラウザにlocalhostはSSLで接続しますよと登録していることが原因です。 HSTS(HTTP Strict Transport Security)にlocalhostはいつもSSL接続で運用しますよとchromeに登録をmkcertインストール時に自動でしてしまうようです。