CentOS 8.2 にLet’s encrypt でSSL証明書を設定した時のメモ。
検索すると、古いやり方が出てくる。最新のやり方は、Certbotの本家サイトに行くのがいい。
https://certbot.eff.org/lets-encrypt/centosrhel8-apache
OSとWebサーバーを選んで、後は指示通りにやるだけ。
一応、CentOS 8.2 で、Apache 2.4 でやった時の手順は以下(2020年9月3日時点)。
1.SSLサーバーの設定
mod_sslは既に入れてあり、SSLは有効化されている。
ただし、SSL証明書を取得したいドメインについては、バーチャルホストとして定義することが必要。
デフォルトの/etc/httpd/conf/httpd.confではなく、/etc/httpd/conf.d以下に、バーチャルホストを定義する。ここに定義した、XXXX.com.confに対して、後の手順4で、Certbotが、XXXX.com-le-ssl.confを作成して、XXXX.com.confについても、httpsリダイレクトに修正してくれる。
2.EPELライブラリの有効化
https://fedoraproject.org/wiki/EPEL#Quickstart
これも既にやってあったけど、一応、以下をやる。
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
後、一応、こちらも入れておいた方がいいい。
sudo dnf config-manager --set-enabled PowerTools
3.Certbotのインストール
sudo dnf install certbot python3-certbot-apache
4.証明書のインストール
HTTP用にバーチャルホストが定義してあれば、自動で証明書を取得して、定義ファイルも作ってくれる。
sudo certbot --apache
SSL化したいバーチャルホストを選択すれば、後は自動でやってくれる。ドメイン定義がちゃんとあっていることが前提なので、新サーバーに移行する場合の、新サーバー側で事前のSSL証明書取得についてはできない。
5.自動更新の設定
crontabに直接、定期的に更新するのを設定する。
echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null