はじめに
本記事では、Windows の PC で WSL(Ubuntu)を使いながら、mkcert を利用してローカル開発用の HTTPS 環境を構築する手順をまとめます。
対象読者:
- Windows + WSL2 (Ubuntu) で開発しているエンジニア
- ローカル HTTPS 証明書を簡単に作りたい人
- ブラウザで「安全な接続」と認識される開発環境を作りたい人
- 使用ブラウザ;Chrome
mkcert とは
- ローカル開発用の SSL 証明書を簡単に発行できるツール
- 自動で Root CA を作成し、OS/ブラウザに信頼させることが可能
- 自己署名証明書より簡単でブラウザ警告が出にくい
公式ページ:https://github.com/FiloSottile/mkcert
1. WSLの確認と更新
mkcertをインストールするにあたって、Ubuntu(WSL)環境の確認を行います。
# WSLのバージョン確認(Windows側)
wsl -l -v
# Ubuntuの更新
sudo apt update && sudo apt upgrade -y
2. mkcertのインストール
Ubuntu上の任意のディレクトリ上で、mkcertをインストールします。
# wgetのインストール(ダウンロードコマンドのインストール)
sudo apt install wget -y
# mkcert のバイナリをダウンロード
wget https://github.com/FiloSottile/mkcert/releases/latest/download/mkcert-linux-amd64
# 実行権限の付与
chmod +x mkcert-linux-amd64
# システムのパスに移動してどこからでも使えるようにする
sudo mv mkcert-linux-amd64 /usr/local/bin/mkcert
# バージョン確認
mkcert -version
Firefoxを使用している場合は、以下のコマンドで、依存パッケージをインストールする必要があります。
# Firefox用に依存パッケージをインストール
sudo apt install libnss3-tools -y
3. RootCA(ルート証明書)の作成とインストール
Ubuntu内の任意のディレクトリ上で、RootCA(ルート証明書)を作成およびインストールします。
※これはUbuntu内で信頼されていますが、Windows側ではまだ信頼されていません。
# mkcertのインストール
mkcert -install
4. サーバ証明書(SSL/TLS証明書)の発行
Ubuntu内のプロジェクトディレクトリの、.pemファイルを置きたい場所で以下のコマンドを叩く。
※サーバ証明書を置く場所、ドメインはプロジェクトにより異なります。
※.key は git に絶対上げないこと。
# 開発用ドメインの証明書を発行
mkcert localhost 127.0.0.1 ::1 myapp.local
これで証明書の発行自体は完了です。
5. Windows側へのRootCA(ルート証明書)インポート
1. 証明書マネージャーを開く
まず、Windowsの証明書マネージャーを開きます。
Windowsキー+Rを押して、certmgr.mscと入力してEnter。
2. Windowsへのインポート
- 左側で「信頼されたルート証明機関」を展開
- 「証明書」を右クリック
- 「すべてのタスク」→「インポート」
- 「次へ」
- 「参照」でダウンロードフォルダのrootCA.pemを選択(ファイル種類を「すべてのファイル」に変更)
- 「次へ」
- 「証明書をすべて次のストアに配置する」で「信頼されたルート証明機関」になっているか確認
- 「次へ」→「完了」
以上でWSL環境でのmkcertを使ったローカルHTTPS構築手順が完了です。
もし今回の手順でうまくいかない場合は、以下を確認してください。
- 実行権限
- mkcertの移動先パス
- Ubuntu側の証明書ストアの書き込み権限
- 依存パッケージ不足の確認
- 使用ブラウザ(Firefoxなら「証明書管理」から手動でインポートが必要)
- サーバ証明書がプロジェクト内に置かれているか
- .keyファイルがgitに含まれていないか
- ブラウザのキャッシュクリア
以上です。
ご一読いただきありがとうございます。