クイックノート

ちょっとした発見・アイデアから知識の発掘を

サブドメインのSSL化【letsencrypt SAN証明書】

メインサイトとブログを同一サーバー上で運用していて、
「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です。

プライバシーポリシー