無料でサーバー証明書を発行できるサービスとして人気のある「Let’s Encrypt」では、複数の異なるドメイン名・サブドメイン名で使用できる、サブジェクト代替名(SAN : Subject Alternative Name)という仕組みを使用したサーバー証明書を発行することができます。
SAN対応のサーバー証明書を発行するときは、すべてのドメイン名(aaa.example.com、bbb.example.netなど)を指定して発行する必要があり、後から対応するドメイン名を増やしたい場合は、証明書の再発行が必要になります。
SAN対応の証明書は、ワイルドカード証明書に比べ自由度は下がりますが、複数のドメイン名やサブドメイン名に対応したサーバー証明書を作成したいときに有効な方法です。
そこでここでは、CentOS 7のWebサーバー(Nginx)環境で、Let’s EncryptのSAN対応証明書を発行する手順を紹介します。
目次
動作環境
この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。
ソフトウェア | バージョン |
---|---|
CentOS Linux | 7.9.2009 |
SAN対応のサーバー証明書を発行する
ここでは、Let’s Encryptでサーバー証明書を発行・更新するために必要なツール「certbot」はすでにインストールされていることを前提とします。
「certbot」のインストール方法は、以下の投稿をご覧ください。

証明書の発行
SAN対応の証明書を発行するときは、発行する証明書を利用するすべてのドメイン名を指定して、コマンドを実行します。
たとえば「example.com」と「aaa.example.com」という2つのドメイン名に対応した証明書を発行したいときは、次のようにコマンドを実行します。
なお、Webサーバーがすでに稼働しているときは、いったんWebサーバーのサービスを停止してからコマンドを実行します。
# certbot certonly --standalone -d example.com -d aaa.example.com
すでに「example.com」というサーバー証明書を取得しており、後から証明書に「aaa.example.com」というサブドメインを追加したい場合は、Webサーバーのサービスを停止してから、次のようにコマンドを実行します。
# certbot certonly --force-renew --cert-name example.com -d example.com -d aaa.example.com
なお、certbotコマンドではWebサーバーのサービスを停止させずにサーバー証明書を発行したいときなどのオプションも用意されているので、詳しくは以下の公式サイトをご参照ください。
動作の確認
発行した証明書をWebサーバーに設定したあとは、ブラウザでサイトへアクセスして、証明書を確認すれば、証明書の「サブジェクト代替名」フィールド欄に、証明書発行時に指定したドメイン名が列挙されているはずです。
あとがき
ワイルドカード証明書作れなくても、全然問題ない感じです。