ウェブサイトやサービスを展開する際、接続するユーザーへの安心感を高めるために、SSL証明書はほぼ必ず必要になります。本番環境では、必ず証明機関からSSL証明書を購入する必要があります。そうでなければ、ユーザーに十分な安心感を与えることはできません。
ただし、テスト目的では、認証局から証明書を購入する必要はありません(少なくとも本番環境に移行する準備ができるまでは)。そのような場合は、ローカルで署名された証明書を生成することをお勧めします。
Linux には自己署名証明書を作成するためのツールがいくつかあり、そのうちの 1 つが mkcert です。
参照: セキュリティインシデント対応ポリシー (TechRepublic Premium)
mkcert を使ってローカル署名証明書を作成する手順を解説します。Ubuntu Server 20.04 でデモを行います。
必要なもの
これから行うことを再現するには、Ubuntu Server の実行インスタンスと sudo 権限を持つユーザーが必要です。これで準備は完了です。さあ、始めましょう。
mkcertのインストール方法
まず最初に、mkcert をインストールします。その前に、以下のコマンドでいくつかの依存関係をインストールする必要があります。
sudo apt-get install wget libnss3-tools -y
次に、必要な mkcert ファイルをダウンロードします。
wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64
次のコマンドで、ファイルを /usr/bin に移動して名前を変更します。
sudo mv mkcert-v1.4.3-linux-amd64 /usr/bin/mkcert
次のコマンドを使用して、ファイルに実行権限を与えます。
sudo chmod +x /usr/bin/mkcert
インストールを検証するには、以下を実行します。
mkcert --version
ターミナルにリリース番号が表示されます。
最初のSSLを生成する方法
次のコマンドで最初のローカル CA 証明書を生成できます。
mkcert -install
上記のコマンドを実行すると、新しい証明書が生成されます。情報は一切入力する必要はありません。証明書はローカルストアに保存されます。ローカルストアは次のコマンドで見つけることができます。
mkcert -CAROOT
次のような画面が表示されます。
/home/jack/.local/share/mkcert
次に、次のコマンドを使用して、IP アドレス 192.168.1.111 で trtest というテスト Web サイトの証明書を生成します。
mkcert trtest localhost 192.168.1.111 ::1
上記のコマンドの出力には以下が含まれます。
Created a new certificate valid for the following names ð
- "trtest"
- "localhost"
- "192.168.1.111"
- "::1"
出力には、次のように新しく作成された pem ファイルの場所も含まれます。
The certificate is at "./trtest+3.pem" and the key at "./trtest+3-key.pem"
その後、そのpemファイルをテストWebサーバーが使用するディレクトリにコピーし、設定を行います。例えば、trtest+3-key.pemファイルを/var/www/html/certs/ディレクトリに移動します。その後、Webサーバーでその証明書を使用するように設定します。例えば、NGINXの場合、設定は以下のようになります。
ssl_certificate /var/www/html/certs/trtest+3.pem;
ssl_certificate_key /var/www/html/certs/trtest+3-key.pem;
mkcertツールを使ってローカル署名されたSSL証明書を生成する方法は以上です。証明書を即座に作成する必要がある場合、mkcertは最も簡単なツールの一つです。

画像:GettyImages/茅野雄一郎