Let’s encryptから取得した異なるドメインに対するSSL/TLS証明書を同一のWebサーバで共存させて使用するための設定の方法

By | 2017年6月20日 , Last update: 2020年12月31日

はじめに

Let’s encryptのおかげで無料でかつ簡単にSSL/TLS証明書を取得できるようになりましたので、個人でも手軽にSSL/TLS証明書が利用できるようになりました。

そこで本記事では、今まで自己署名証明書(いわゆる「オレオレ証明書」)でこっそり運用していたドメイン用のSSL/TLS証明書を取得し、すでに別のドメインのSSL/TLS証明書がインストールされているサーバに追加でインストールしてみます。

スポンサーリンク

SSL/TLS証明書のインストール

root権限でシェルのコマンドプロンプトからLet’s encryptのページに記述されている通りに以下のコマンドを実行します(ドメイン名は実際に実行したものとは異なります)。

# certbot certonly --webroot -w /var/www/html -d www.example.jp

すると、以下のように表示されます。”Congratulations!”と表示されているので、証明書の取得に成功しているようです。寄付も求められているような気がしますが、気のせいということにしておきます。

IMPORTANT NOTES: – Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/www.example.jp/fullchain.pem. Your cert will expire on 2017-09-17. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run “certbot renew” – If you like Certbot, please consider supporting our work by: Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

ここで ls コマンドで /etc/letsencrypt/liveの下をのぞいてみます。

[root@localhost apache]# ls -l /etc/letsencrypt/live/ 合計 0 drwxr-xr-x. 2 root root 93 517 07:29 example.org drwxr-xr-x. 2 root root 93 619 20:57 www.example.jp

ディレクトリが2個になっているのが確認できます。

Apache httpd(v2.4.25)に設定する。

証明書の取得に成功したら、webサーバに対して設定を行います。Apache httpd(v2.4.25)の場合はssl.confを編集することで設定します。2つのドメインの設定はssl.conf内でVirtualHostタグですでに分割されているので、それぞれに対して証明書等の設定を行います。設定例は以下の通りです(証明書等に直接関連しない設定は省略しています)。

# 1つめのドメインの設定
<VirtualHost _default_:443>
ServerName example.org:443
SSLCertificateFile /etc/letsencrypt/live/example.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.org/privkey.pem
</VirtualHost>
# 2つめのドメインの設定
<VirtualHost _default_:443>
ServerName www.example.jp:443
SSLCertificateFile /etc/letsencrypt/live/www.example.jp/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.jp/privkey.pem
</VirtualHost>

Apache httpdの再起動

上記の設定を行った後、Webサーバを忘れずに再起動します。

すると…


スポンサーリンク

今まで赤色のカギが表示されていたところに緑色のカギが表示されました。

ハマりどころ(2017/09/08補足)

Apache httpdのssl.confでDocumentRootの設定に”/var/www/html”以外の文字列を設定しているドメインがある場合には、/etc/letsencrypt/renewalの下にある<当該ドメイン名>.confのwebroot_mapの設定を以下のように変更しないと、証明書の更新に失敗する可能性があります。

[webroot_map] (ドメイン名) = (ssl.confのDocumentRootで設定されている文字列)

 

まとめ

オレオレ証明書を作成していた時にはOpenSSLのコマンドを何回も実行しないと証明書を作成できなかったので、それに比べるとLet’s encryptはあまりセキュリティに詳しくなくても使いやすく、この手のセキュリティのシステムにしてはよく工夫されていると感じました。オレオレ証明書ではなく、正規に証明された証明書を利用できますしね。

この記事は以上です。