カテゴリー: Server

mkcertで簡単にオレオレ証明書を発行する

はじめに

ローカルのwebサーバにhttpsで接続する場合、よくある方法がオレオレ証明書の発行です。
リモート環境ならLet’s Encryptでサクッと終わるのですが、ローカルでも同じくらい簡単な方法は無いかと探したら、mkcertなるツールが見つかりました。
実際に試して数分で完了でき、とても手軽でしたので紹介・共有しようと思います。

前提

  • masOS High Sierra 10.13.6
  • Vagrant+CentOS7+nginx
  • ローカルの/etc/hostsに設定したドメインで、ブラウザからhttp接続できるようになっている

mkcert

概要

ブラウザに警告が出ないように自己証明書を作るのは本来複雑な手順が必要ですが、そのへんを自動でやってくれるのがmkcertです。golang製のツールで、開発環境用の証明書をお手軽に発行する目的で作られました。It requires no configuration.と謳ってる通り、本当にあっさり終わります。
WindowsやLinuxでも動作するようですが、対応ブラウザはFirefoxとChromeだけです。

インストール

homebrewで簡単に入ります。インストール後も手間要らず。

$ brew install mkcert

# Firefoxを使うならこちらも要インストール
$ brew install nss

# ローカルに認証局を作成する
$ mkcert -install

証明書作成

ドメインを指定してmkcertを実行します。下記の例ではsample.localとしています。

$ mkcert sample.local
Using the local CA at "/Users/nomura/Library/Application Support/mkcert"

Created a new certificate valid for the following names
 - "sample.local"

The certificate is at "./sample.local.pem" and the key at "./sample.local-key.pem"

# コマンド実行時のカレントディレクトリに証明書が生成されます
$ ls -l ./*.pem
-rw-------  1 nomura  staff  1704  2 27 20:03 ./sample.local-key.pem
-rw-r--r--  1 nomura  staff  1529  2 27 20:03 ./sample.local.pem

証明書設置と設定

webサーバにログインして、先ほど作った証明書を設置します。また、https接続の設定を記述します。以下はnginx.confの一部抜粋です。

$ sudo vi /etc/nginx/conf.d/default.conf

ssl_protocols TLSv1.2;
server {
    listen 443 ssl;
    server_name sample.local;
    ssl_certificate /etc/nginx/conf.d/sample.local.pem;
    ssl_certificate_key /etc/nginx/conf.d/sample.local-key.pem;
}

設定が終わったら$ systemctl reload nginxでnginxをリロードしましょう。

接続確認

ブラウザでhttps://sample.localに接続できればOKです。接続成功した場合、証明書の詳細情報がこんな感じで確認できます。

さいごに

Dockerで動かしているnginxやApacheでもmkcertは問題なく使えるはずですが、Dockerではhttps-portalなるLet’s Encrypt全自動コンテナがあるようです。開発環境をチームに配布することを考えると、docker-compose upだけで何も意識せずhttps接続環境が整うのは素晴らしいですね。こちらも調べてみようと思います。

おすすめ書籍

nomura

シェア
執筆者:
nomura
タグ: mkcertSSLnginx

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

3週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

1か月 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前