LoginSignup
11
6

More than 5 years have passed since last update.

ローカルでも valid な証明書が使いたい!

Last updated at Posted at 2019-02-07

Screenshot from 2019-02-07 16-30-00.png

ローカルで HTTPS な Web サービスを開発する時にあるあるな 「自己署名証明書つらい」 問題。

  • chrome://flags#allow-insecure-localhost 仮想環境など localhost にサーバを立てれないとつらい
  • Firefox 証明書の例外追加 他のブラウザにない機能なのでつらい

解決します。

要約

  1. FiloSottile/mkcert をインストールします。
  2. $ mkcert -install 打ちます。
  3. ブラウザ再起動します。
  4. $ mkcert 任意のドメイン名(複数個、ワイルドカードOK) 打ちます。
  5. 生成された鍵をサーバに設定して再起動します。

Screenshot from 2019-02-07 16-39-20.png

何が起こっている?

ブラウザが「この証明書が valid かどうか」を判定するため、ローカルに 「ルート CA (証明局)」 という情報を持っています。

デフォルトでは各ブラウザベンダーが承認したルート CA と、そこから木構造で発行の権限が移譲されている中間 CA が設定されていて、それらの CA から発行された証明書であれば valid である、という判定を行っています。

mkcert は、この ルート CA を生成し、自分のブラウザに登録します

本来ルート CA の自分での登録は様々な設定を行って、色んなコマンドを叩いてやっと実現出来る作業なんですが、 mkcert はそれらの面倒を完全に省略することが可能です。 mkcert -install に全ての面倒が圧縮されています。

これで、 ローカルの mkcert で発行された証明書は valid とみなす とブラウザが判断出来るようになります。

もちろんこれはこの環境以外では valid ではない(valid とみなすルート CA がない)ので、ローカル環境だけで利用してくださいね。

Web サービスを開発するエンジニアは全員ローカルに mkcert によるルート証明局を持つ世界になったらいいなーと思います。

証明書つらい問題を抱えている全てのエンジニアに届いてほしい!

(証明書周りはあまり詳しくないので間違った表現もあると思います。とりあえず ローカルで簡単に valid な証明書作れる だけ覚えてもらえれば助かります。)

sample.com さんを参考資料として掲載しましたが、ローカルでは実在しないドメインを使いましょう!

11
6
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
11
6