Let’s Encrypt の証明書を自動更新しようとcrontab に更新処理を記載しました。
まずはちゃんと動くかどうかテストしたかったので1分後に発火するように以下のように crontab に記載して実行を待ちました。
31 6 * * * certbot renew -q –no-self-upgrade –post-hook “service httpd reload”
指定した時刻になったので証明書を確認してみるも、更新された気配がありません。
ログを確認すると以下のようなメッセージが出力されていました
Cert is due for renewal, auto-renewing…
Non-interactive renewal: random delay of 128.91911181737714 seconds
どうやら対話型処理でない場合は遅延時間が設定されてすぐには実行されないようです。
上記のメッセージの場合は約129秒後に実行されることとなりま
なぜこのような仕様になっているかというと、推測ですが、みんな
Cron で証明書を更新しようとすると、Let’s Encrypt のサーバが0時にエライことに
なってしまうので負荷を分散させる目的で遅延をいれているものと
ですので、証明書を自動更新させようとして、cron を設定しテストしてみても
遅延時間によっては一向に証明書が更新されないので悩むことにな
プロセスがまだ残っていれば実行中(スリープ中)ですので、プロ
待ちましょう。
/var/log/letsencrypt/letsencry
を確認すれば遅延時間がわかると思います。
あまりに長い遅延時間であれば、一度プロセスを終了させてから再
良いかもしれません。