クマの手も借りたい
茶トラネコ(@kumanotemo)です。上場を控えたITベンチャーを2社も退職してフリーランスの道を選んだ放浪エンジニアです。
エンジニア

chrome63から.devドメインに強制HSTSでアクセスができなくなった

社内で閉じた環境で開発をする場合、ローカルに Vagrant などで仮想環境を用意したり、開発用のサーバを用意することがあると思います。

その際、IP アドレスや hosts ファイルで名前解決させて仮のドメインでアクセスさせることが多いと思います。

いつもは、hogehoge.local のようなドメインを振ることが多いのですが、今回は開発サーバを用意してもらったこともあり、また自分だけがアクセスするわけではないということで、hogehoge.dev のようなドメインにしました。

TLD が違えど、そこは何でもいい部分なので気にしていなかったのですが、先日、急に接続ができなくなったと報告を受けて調べてみました。

オレオレ証明書の警告とは別のエラーで接続できない

通常、オレオレ証明書で https を実現していたら、ブラウザでアクセスした際に警告画面が出るので、接続許可してアクセスしていると思います。

しかし、エラー内容が HSTS の件に触れられていて、接続の例外許可もできない状態でした。

以下のサイトを見てみると、どうやら、Google が「.dev」を所有して HSTS の対象に入れたことで挙動が変わったようです。

問題の再現方法

元々、https でアクセスしていたのですが、chrome が HSTS を確認する際に、うまく判定できなくなったようですね。

当初、私の PC では問題なく、ローカルの DNS をクリアしたり、シークレットウィンドウでアクセスしたりしてみたのですが接続できていました。

しかし、chrome のキャッシュをクリアしたところ、この問題を再現できました。

よって、同じように .dev ドメインを開発環境などで使っている人で、まだこの問題に遭遇していない人は今後発生する可能性があります。

解決策としては、ドメインを変更することの一択なのですが、今後も同様の問題に遭遇しないように、セーフテイーな TDL にしておいた方が無難です。

.test
.example
.invalid
.localhost

まとめ

今回は、.dev を http で接続していて、急に https にリダイレクトされるようになったという人が多かったようですが、https で運用していても同じ運命でした。

HSTS の設定はしていなかったので、なぜ HSTS に強制にされているんだろうとエラーメッセージを見ていて疑問だったのですが、これで謎が解決です。

よくよく探してみたら、日本語記事できれいにまとめてくれているサイトがあったので、以下を読んでみるのがオススメです。

最初から原因が少しでもわかれば辿り着いたのでしょうが、ブラウザの問題なのかサーバ側の問題なのか、SSL のサーバ証明書なのか、原因を切り分けたりしていたので自己解決してから見つかるという・・・。

逆に強制 HSTS の場合の設定は、以前以下にまとめたので、そちらが必要な場合は下記を参照してください。

やさしいKotlin入門

プログラミング初心者または Kotlin 初心者向けの入門本。Android 開発ではなく Kotlin の言語を覚えてみたい方にオススメの入門本です。

Java と比較して説明される書籍が多い中、Java や他のプログラム言語を知らない人向けになるので、例えば Java はあまり詳しくないけど PHP や Python は書けるといったパターンとも相性がいいですよ。

あなたにオススメ