CentOS 7 で仮のSSL証明書をとりあえず簡単に生成する方法

昨今では、Let’s Encryptの登場により、正式な証明書をかなり入手しやすくなりました。

その一方で、社内LAN内でのみアクセス可能なテストサーバー、などといったLet’s Encryptで認証を受けるのが難しいサーバーでSSLを使いたい場合や、正式なSSLを発行する前にとりあえずWebサーバーやメールサーバー等のSSL機能が動作しているか確認したい、といった場面もあるかと思います。

その場合、LAN内でのみ通用する独自の認証局を作り、署名して証明書を作成して…としっかりとした方法で構築することもできますが、”とりあえずSSLエラーが出ても問題ないので、とにかくすぐに欲しい”という場合はちょっと面倒です。

一部のLinuxディストリビュージョンでは、そんな場合に備えて”動作チェック用”のssl証明書を一発で発行してくれるスクリプトやコマンドがあります。

例えばUbuntuの場合、

ssl-cert

というパッケージをインストールすることで、”snakeoil”という仮のSSL証明書を一発で生成することができます。

sudo  apt install ssl-cert
sudo make-ssl-cert generate-default-snakeoil

上記コマンドで下記のように証明書と秘密鍵が生成されます。

証明書:/etc/ssl/certs/ssl-cert-snakeoil.pem
秘密鍵:/etc/ssl/private/ssl-cert-snakeoil.key

一方CentOSでは”make-ssl-cert”コマンドが存在しないようですが、代わりに

/etc/ssl/

make-dummy-cert

というスクリプトが用意されており

cd /etc/ssl/certs
sudo ./make-dummy-cert ファイル名

とすることで、一発で指定されたファイル名で仮の証明書を発行してくれます。

なお、このコマンドで生成されるファイルには SSL証明書と一緒に秘密鍵も入っているので、Webサーバーなどで秘密鍵と証明書を指定するときは、同じファイルをそれぞれに指定すれば動作するかと思います。

ちなみに、nginxを使用してリバースプロキシをする際、nginx側で正式な証明書を設定していれば、nginxと裏側のサーバーとの通信をSSLを行う場合、裏側のサーバーにこの仮のSSLを設定していてもエラーになりません。 (nginxでは基本的に裏側サーバーの証明書のコモンネームと要求されたホスト名が不一致でも警告を行わない)
そのため、実際の運用でもこの仮SSL証明書を裏側のサーバーに対して使用することができます。

ただし、nginxと裏側のサーバーの間をつなぐネットワークが信頼できない場合は、正式なSSLを設定した方がいい場合もあるかと思います。このあたりは使用目的や構築する環境の実態に合わせて選択をしてください。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG