Let’s Encryptで有効なドメインのサーバ証明書を一度取得し、その後DNSからそのドメインを削除し、サーバ証明書だけをローカルで使用するようなイリーガルな方法をとれば、ローカルなサーバ証明書を取得できたことになるかもしれないが。 Let’s Encryptnoの証明書は3ヶ月間のみ有効で、3ヶ月後には再度このサーバをDNSに登録し、直接外部から読み取れる状態にして更新する必要があり、現実的なやり方ではない。
結局、「数分でできる!mkcertでローカル環境へのSSL証明書設定」の文字に惹かれ「Homebrew」の「mkcert」コマンドを使用することに。
参考: ローカル環境用SSLサーバ証明書を簡単に発行する(mkcert)
1.Homebrewのインストール
MACを触ったこともない貧乏人なので全く知らなかったが(←無知な老人のひがみ)、MacOS環境では、デファクトなパッケージマネージャだとのこと。 Linuxでも使用できるそうで、まずは、このHomebrewのインストールから。 結構な時間がかかりLinuxのパッケージが一式入る感じ、ディスクの空き容量が不安になるほど。
ただ、homebrewのホームページに記載のインストールスクリプトを利用するので、待つのはうんざりだがインストール自体はとても簡単。 なおrootではインストール不可、sudoの必要もない。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brewのインストール完了後、以下のコマンドで、パスを登録
$ echo 'eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)' >> /home/tako/.bash_profile
$ eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ source ~/.bash_profile
$ source ~/.bashrc
アンインストールの仕方もFAQに詳しく載っている。 /home/linuxbrew配下に全てのファイルがあるのか、安心してアンインストールできそう。
2.mkcertのインストール
Homebrewのインストールが終わったので、mkcertのインストールを
mkcert は簡単なコマンドでローカル環境に認証局を登録し、サーバ証明書の発行を行ってくれるツールだそうでインストールは、
Homebrewを利用の場合
$ brew install mkcert
Firefoxを利用する場合
$ brew install nss
3.ローカル認証局の作成
$ mkcert --install
Created a new local CA ?
Sudo password:
と聞いてくるので、パスワードを入れるとローカルの認証局が出来るようだ。
実際に、/home/tako(ユーザのホームディレクトリ)/.local/share/mkcertがCA証明書格納ディレクトリとして新たにできていて、その中に、CA証明書「rootCA.pem」と秘密鍵「rootCA-key.pem」が保管されていた。
4.サーバ証明書の発行
サーバ証明書ファイルと秘密鍵ファイルを作成するには、サーバ名を引数に
$ mkcert test12.local
すると、/home/tako(ユーザのホームディレクトリ)に
test12.local-key.pem
test12.local.pem
の公開鍵と秘密鍵の両方ができているので、これをtest12.localの適当なフォルダへ移動。
5.ブラウザにCA証明書をインストール (初回のみ)
chromeの場合 特にこの作業はしなかったが、問題はなかった。 mkcertで作成したCAは自動的に認証されるような気もするのだが。
Firefoxを利用する場合 以下の作業が必要なようだが、$ brew install nss をすればいらない気も。よく分からない。
1. mkcert –CAROOTコマンドを実行してCA証明書格納ディレクトリを調べる
通常は、/home/tako(ユーザのホームディレクトリ)/.local/share/mkcertに
rootCA-key.pem と rootCA.pemの秘密鍵と公開鍵がある。
2. オプション→プライバシーとセキュリティ→証明書を表示
3. 認証局証明書→インポート
4. 1のパスにあるrootCA.pemを選択
恥ずかしながら、参考のサイトの真似をしただけなのだが、順当にtest12.localのサーバ証明書が出来、エラーもなくローカル証明書が認証され、なにをやっているのか理解できない自分には、まるで狐につままれたよう。
ここらあたりの内容を、詳しく書いた説明書(それも日本語で)があれば嬉しいのだが。 自分に理解できるか否かは別にして。