ローカル環境で使うオレオレ証明書を簡単に「保護された通信」に切り替えることができるコマンドラインツール「mkcert」を試した.先月に GitHub Trending に入っていて知ったのと,自分のローカル環境でオレオレ証明書を使っているときに,Chrome で警告が出ていたので(この接続ではプライバシーが保護されません),そのあたりを全て解決することができた.とにかく便利!
インストール
今回は brew で Mac にインストールした.既に brew に対応している.
$ brew install mkcert
最近,リリースタグにバイナリが含まれているので,もし Linux 環境で使う場合は,以下のように取得する.
$ wget -O /usr/local/bin/mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.0.0/mkcert-v1.0.0-linux-amd64
仕組み
詳しくは mkcert の README を読んでもらうとして,ザックリと仕組みを説明すると,単純にオレオレ証明書を作るのではなく,Mac 上にオレオレ認証局を作り,そこで署名をしている.このあたりの面倒な手順を全てコマンドラインツール側でやってくれている点がポイント.Mac で「キーチェーンアクセス」を開くと,確かに「ルート認証局」が追加されていた.
手順
まず,認証局を作る.-install
オプションを見て,個人的にはハイフンが1個なのが少し気になるけど...!
$ mkcert -install Using the local CA at "/Users/kakakakakku/Library/Application Support/mkcert" ✨ The local CA is now installed in the system trust store! ⚡️
次に,証明書を作る.ドメイン固定でも良いし,サブドメインをワイルドカードにすることもできる.
# ドメイン固定の場合 $ mkcert local.kakakakakku.com Using the local CA at "/Users/kakakakakku/Library/Application Support/mkcert" ✨ Created a new certificate valid for the following names 📜 - "local.kakakakakku.com" The certificate is at "./local.kakakakakku.com.pem" and the key at "./local.kakakakakku.com-key.pem" ✅ # ワイルドカードの場合 $ mkcert *.kakakakakku.com Using the local CA at "/Users/kakakakakku/Library/Application Support/mkcert" ✨ Created a new certificate valid for the following names 📜 - "*.kakakakakku.com" The certificate is at "./_wildcard.kakakakakku.com.pem" and the key at "./_wildcard.kakakakakku.com-key.pem" ✅ # キーペアが作られる $ ls -1 *.pem _wildcard.kakakakakku.com-key.pem _wildcard.kakakakakku.com.pem local.kakakakakku.com-key.pem local.kakakakakku.com.pem
nginx で検証する
Vagrant 上に nginx を構築して,実際にオレオレ証明書(今回はワイルドカード)を試してみた.以下に nginx.conf
の一部を載せている.
server { listen 443 ssl; ssl_certificate _wildcard.kakakakakku.com.pem; ssl_certificate_key _wildcard.kakakakakku.com-key.pem; }
すると「保護された通信」で接続することができた.
また「証明書」も確認することができた.
まとめ
- ローカル環境でオレオレ証明書を使っているけど,Chrome で警告が出ている人は多いと思う
- mkcert を使えば,簡単にオレオレ認証局とオレオレ証明書を作ることができる
とにかく便利!