無料SSL証明書発行の代表ツールとしてCertbotがあるが、cron実行する際に上手くいかなかった理由を解決できたので紹介。
以前紹介の記事
エラーログ
Could not choose appropriate plugin: The requested apache plugin does not appear to be installed
Failed to renew certificate ○○○○○○.com with error: The requested apache plugin does not appear to be installed
certbotは起動しているがapacheが存在しないと書いている。
pipでinstallする場合、以下で必要ライブラリを入手する。
pip install certbot-apache
certbotの更新については以下を実行する。
certbot renew --post-hook "systemctl restart httpd"
cronで実行する
今回生じた問題は、サーバーにログインして、手元で実行した際には上手くいくが、cronで実行した際に同様のエラーが生じており、パス設定が上手く設定できていなかったことが原因だった。
特にcertbot-apacheは実行ユーザのパスに格納されるため、crontab実行時にはパスを通す必要がある。
以下、crontab例
PATH=/root/.pyenv/shims:/root/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
0 3 * * * certbot renew --post-hook "systemctl restart httpd" >& /tmp/certbot.log
意外と扱っている技術ブログがあまりなかったのでcertbotを自動化する際の参考まで。
コメント