certbot-renew.timerで更新時にApacheを再起動する
無料のSSL証明書を更新するには、certbotを利用する事が多いです。このcertbotですが以前ではcrontabでは、以下のように設定して更新していました。
# Lets Encrypt SSL 0 4 1,15 * * certbot renew && systemctl restart httpd
今回インストールしたRockyLinux 9では、certbotをインストールすると、「certbot-renew.timer」を利用できるので、これを利用します
certbot-renew.timerは、Let's EncryptのSSL証明書を自動更新するためのLinuxのsystemdタイマーユニットで、通常1日2回certbot renewコマンドを実行して証明書の期限切れを防ぎ、有効期限の近い証明書を自動更新します。systemdタイマーユニットを利用するのでcron設定は不要です。
但し、更新はしてくれるけどApacheとかは再読み込み・再起動は実施してくれませんので、下記の手順でcertbot renewを実行した場合にApacheを再起動するように設定する必要があります
- deploy-hook スクリプト作成
$ sudo vi /etc/letsencrypt/renewal-hooks/deploy/restart-apache.sh #!/bin/bash /usr/bin/systemctl reload httpd
※ reload 推奨です。SSL証明書を読み直すだけですので、restartではなくreload
2. 実行権限付与
$ sudo chmod 755 /etc/letsencrypt/renewal-hooks/deploy/restart-apache.sh
3. 動作確認(テストモード)
$ sudo certbot renew --dry-run
SSL証明書の更新がある場合は、 reload httpd が実行されます。

