kakakakakku blog

Weekly Tech Blog: Keep on Learning!

ローカル環境で使うオレオレ認証局とオレオレ証明書を簡単に作れる mkcert を試した

ローカル環境で使うオレオレ証明書を簡単に「保護された通信」に切り替えることができるコマンドラインツール「mkcert」を試した.先月に GitHub Trending に入っていて知ったのと,自分のローカル環境でオレオレ証明書を使っているときに,Chrome で警告が出ていたので(この接続ではプライバシーが保護されません),そのあたりを全て解決することができた.とにかく便利!

github.com

インストール

今回は 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 で「キーチェーンアクセス」を開くと,確かに「ルート認証局」が追加されていた.

f:id:kakku22:20180727115432p:plain

手順

まず,認証局を作る.-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;
}

すると「保護された通信」で接続することができた.

f:id:kakku22:20180727115444p:plain

また「証明書」も確認することができた.

f:id:kakku22:20180727115453p:plain

まとめ

  • ローカル環境でオレオレ証明書を使っているけど,Chrome で警告が出ている人は多いと思う
  • mkcert を使えば,簡単にオレオレ認証局とオレオレ証明書を作ることができる

とにかく便利!