Let’s EncryptでWEBサーバをhttps化(2)

WEBサーバをLet’s Encryptの証明書でhttps化する話を書きました。

が、Let’s Encryptの証明書の期限はわずかに3ヶ月。

3ヶ月ごとに、前回書いたような手続きを踏まなければならないか、というと、そんなことはありません。

証明書更新を自動化する

証明書の更新も、 certbot を使用します。当然ながら、証明書を取得したサーバから実行する必要があります。

# certbot renew

たったこれだけです。

オプションでドメインを指定することもなく、証明書の存在場所を指定するわけでもなく、証明書を取得したサーバでしか実行できないのが、これだけでも読み取れます。

3ヶ月の期限が近付いたら、これを実行してあげるだけです。

が、そんなことは自動化してあげましょう。

更新したことをメールで受け取りたくて、このサイトの方法を参考にさせて頂きました。

参考、というよりも、そのままです。。

crontab で、自動実行を設定します。

# crontab -e
00 04 01 * * certbot renew 2>&1 | mail -s "Let's Encrypt update information" ○○○@□□□.com && systemctl restart httpd

毎月1日の早朝4時に、 certbot renew を実行し、結果を “Let’s Encrypt update information" の件名で、○○○@□□□.com 宛にメールを送信。それと、webサーバ(httpd)を再起動する、というものです。

証明書が更新されたら、httpdの再起動が必要ですので、その対応が含まれています。

ちなみに、3月中に証明書を取得しましたので、4月1日に、メールが届きました。

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/www.●●●.live-on.net.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not yet due for renewal

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The following certificates are not due for renewal yet:
  /etc/letsencrypt/live/www.●●●.live-on.net/fullchain.pem expires on 2021-06-07 (skipped)
No renewals were attempted.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

毎月1日に実行しますが、Let’s Encrypt 側で毎回更新されるわけではなく、期限の残り日数が一定期日を下回ると更新されるようです。ですので、今回は更新されなかったようです。

上記の設定さえ行えば、今後、特に意識することなく、自動的に証明書が更新され続けます。