Apacheで複数のドメインを指定しながら、CertbotでSSL証明書の発行をしてみた

こんにちは。hacknoteのr.katoです。

今回はApache環境で複数のドメインを使ってネームベースバーチャルホスト設定下でLet’s Encryptで発行したSSL証明書を用いるために設定をしたのでその紹介です。

環境

  • OS: centOS7
  • Apache: 2.4.6
  • Openssl: 1.0.2k-fips
  • mod_ssl: 1:2.4.6-90.el7.centos
  • certbot: 1.0.0
  • ドメイン: AAA.com BBB.com

ひとまず、certbotで発行しようとした

ひとまず、 certbot certonly --apache -d AAA.com -d BBB.com で2つのドメインを指定して、SSL証明書の発行のみを行おうとしました。

centos@ipXXXXXXXX:~$ sudo su -
Last Login.......
root@ipXXXXXXXX:~# certbot certonly --apache -d AAA.com -d BBB.com
...
(一部 略)
...
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for AAA.com
http-01 challenge for BBB.com
Cleaning up challenges
Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.

しかし、このように失敗しました。
よくよく考えたら、この方法では一度、port80を介してサーバーの確認が入るので
Apache側の設定での設定をして上げる必要があります。

一時的に、AAA.comとBBB.comのport80でアクセスできるように設定しリトライ

一時的にconfファイルを書き換えリトライしてみました。

root@ipXXXXXXXX:~# certbot certonly --apache -d AAA.com -d BBB.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for AAA.com
http-01 challenge for BBB.com
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/AAA.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/AAA.com/privkey.pem
   Your cert will expire on 2020-06-07. 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

無事、 /etc/letsencrypt/archive/AAA.com/ に4つのファイルが作成され、それらのシンボリックリンクが /etc/letsencrypt/live/AAA.com/ に作成されました。

作成されたファイルは次のようになっています。

ファイル名内容
privkey.pem秘密鍵
cert.pem証明書
chain.pem中間証明書
fullchain.pem証明書と中間証明書を連結したファイル

最後に

シンボリックリンクをconfファイルに設定することでサイトのSSL化ができます。

ちなみに、
Apache2.4.7以前ではSSLの設定に

  • privkey.pem
  • cert.pem
  • chain.pem

を使い、

Apache2.4.8以降とNginxでは

  • privkey.pem
  • fullchain.pem

を使うようです。