Let’s Encryptでワイルドカードっぽいサーバー証明書を作成する方法

無料のサーバー証明書「Let’s Encrypt」は、コマンドで簡単に取得・更新でき、とても便利に使わせてもらっていますが、複数のホスト名に対応するワイルドカード証明書は作成できません。

そのかわりに、Let’s EncryptではSAN(Subject Alternative Name)対応の証明書を作成できます。SAN対応証明書は、ワイルドカード証明書に比べ自由度は下がりますが、複数のドメイン名に対応するのに十分有効な方法です。

Memo

ワイルドカード証明書は「*.example.com」で発行が可能で、サブドメインが増えても同一の証明書で対応できますが、SANの場合は、証明書発行時にすべてのドメイン名(aaa.example.com、bbb.example.comなど)を指定する必要があり、後からドメイン名を増やしたい場合は、証明書の再発行が必要になります。

ここでは、Let’s Encryptで、SAN対応の証明書を発行する手順を紹介します。

手順

証明書を発行・更新するために必要なツール「certbot」はすでにマシンにインストールされていることを前提とします。

「certbot」のインストール方法は、以下の投稿をご覧ください。

WordPress環境(Nginx+fastCGI+php-fpm)を常時SSL化する
CentOS7+nginx+fastCGI+php-fpm環境のWordPressを、常時SSL化したときの手順を紹介します。ちなみ...

証明書発行

発行したいすべてのドメイン名を指定して、コマンドを実行します。
ここでは、以下の2つのドメイン名を指定する場合のコマンドを例示しています。

ドメイン名 ドキュメントルート
aaa.example.com /var/www/wordpress
bbb.example.com /var/www/wordpress2
certbot certonly --webroot -w /var/www/wordpress -d aaa.example.com -w /var/www/wordpress2 -d bbb.example.com --email admin@example.com --agree-tos

一番先に指定したドメイン名が「Common Name」として使用されます。

Memo

すでにcertbotで取得済みの証明書を、過去に取得したすべてのドメイン名と新たに追加するドメイン名(複数可)に対して有効な証明書に更新するには、オプション「--expand」を付加します。

動作確認

発行された証明書をWebサーバーに設定後、ブラウザでサイトへアクセスし、証明書を確認してみてください。

証明書の詳細フィールド「サブジェクト代替名」に証明書発行時に指定したドメイン名が表示されていればOKです。

まとめ

ワイルドカード証明書作れなくても、全然問題ない感じです。

参考

Let's Encrypt 総合ポータル