MKCertで手軽にローカル開発環境をSSL化する

Posted on
HTTPS MKCert OSS SSL

ローカルのSSL化

普段開発をしていると、ローカル開発環境はSSLを使用せずに構築することが結構ある。環境変数でSSLの使用不使用を振り分ける処理は、できれば無い方がいいのはたしか。

オレオレ証明書

ローカル開発環境をSSL化するためによくあるのが「オレオレ証明書」を作成することである。

オレオレ証明書をopensslで作る(詳細版) – ろば電子が詰まつてゐる

ただ、そんなに頻繁に開発環境構築を行わないため、毎回手順を確認してコマンドを叩くのもめんどくさい。

あと、認証局とサーバの秘密キーが同じ(オレオレ)なので、一応SSLは使えるが警告が出るのでなんか気になる。

さらに、ワイルドカード証明書を作成するにはさらにひと手間必要となる。

MKCert

そこで、もっと手軽に証明書を作成する方法を調べたところ、「MKCert」が良さげみたいだったので紹介する。

GitHub – FiloSottile/mkcert: A simple zero-config tool to make locally trusted development certificates with any names you’d like.

このツールの優れた点は、信頼された認証局も作成してくれるので、SSL接続時に警告が表示されることがない点。いいね。

MKCertの使用方法

インストール

# brewでインストール
$ brew install mkcert

# ローカル認証局の作成
$ mkcert -install

WindowsでもChocolateyかScoopでインストールできる。

# chocolateyの場合
$ choco install mkcert

# Scoopの場合
$ scoop bucket add extras
$ scoop install mkcert

SSL証明書作成 証明書を作成したいドメイン名を指定すれば作成できる。

# 通常のドメイン
$ mkcert example.com test.com

# ワイルドカード
$ mkcert "*.example.com"

すると、カレントディレクトリに*.pemファイルが作成される。

webサーバ側の設定

pemファイルをサーバ内の任意のディレクトリに配置し、ssl.conf等に設定を追加する。 例は、localhostでpemファイルを作成した場合。

SSLCertificateFile /etc/httpd/conf/localhost.pem
SSLCertificateKeyFile /etc/httpd/conf/localhost-key.pem

以上。えっ、めっちゃお手軽・・・。

ローカル開発環境にSSL接続可能になる

設定を終えたらhttpsで任意の先程作成した証明書のドメインにアクセスする。

警告が出ることもなく、信頼された証明書としてちゃんと認識される。


このくらい手軽にできれば、環境構築用のshellとかも作れて良さそう。 プライベートの開発ではmkcertでHTTPS化してやってる。