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を再起動するように設定する必要があります

  1. 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 が実行されます。

\ 最新情報をチェック /