メインサイトとブログを同一サーバー上で運用していて、
「blog.domain.com」と「domain.com」のように、
サブドメインで分けているという時に、
どちらも HTTPS で通信したいということがあると思います。
letsencrypt ではこのような場合、
SAN 証明書と呼ばれる証明書を発行して、
メインドメインとサブドメインの両方をまとめて、
1つの証明書を用意してくれます。
ここでは、このSAN証明書を使って、
複数のドメインの SSL 化を行う方法についてまとめます。
SAN 証明書の取得
準備
まずは letsencrypt をダウンロードします。
sudo apt install git git clone git://github.com/letsencrypt/letsencrypt.git
続いて、次のコマンドを実行します。
cd letsencrypt ./letsencrypt-auto --help
これで、letsencrypt を使う準備ができました。
SAN 証明書の発行
SAN 証明書を発行するには次のようなコマンドを実行します。
./certbot-auto certonly --webroot -w [webroot1] -d [domain1] -w [webroot2] -d [domain2]
[webroot1],[domain1]には、
1つめのサイトのルートディレクトリのパスと、ドメイン名を入力します。
同様に、2つめのサイトについても、
ルートディレクトリのパスとドメイン名を入力します。
3個以上のサイトがあっても、同様です。
最後に指定したドメインがデフォルトのドメインとなり、
この場合は、
/etc/letsencrypt/live/[domain2]/
にSAN証明書が作られます。
Apache の設定
証明書が発行できたら、
apache の設定を行いましょう。
バーチャルホストの設定
SSL化の設定は複数ドメインの場合であっても、
特に違いはありません。
それぞれのバーチャルホストについて、
<VirtualHost *:443> SSLEngine on SSLProtocol all -SSLv2 SSLCertificateFile /etc/letsencrypt/live/[domain2]/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/[domain2]/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/[domain2]/chain.pem ~~~
のように設定しましょう。
どのバーチャルホストについても[domain2]の証明書を指定することに注意しましょう。
あとは、httpのリダイレクトの設定も加えておけばOKです。