letsencryptの証明書自動更新(cron)とちょっとだけSlack連携 でかいたスクリプトは、手動で実行する場合は更新成功するのですが、cronで実行すると何故か毎回失敗するという問題作でした。
そこでスクリプトを見直し、何とか正しく動作するように改良してみました。
筆者はnginx+apacheのサーバー構成です。基本的には--webrootオプションを使って証明書発行や更新を行っています。
注:letsencryptのオプションについては各自の環境に読み替えて下さい。
スクリプト
前回との違いは、--force-renewというオプションを採用したところでしょうか。証明書の残りの有効期限に関係なく更新するというものです。
それからsleepという動作を指定時間停止させる処理を追記しました。 証明書発行に時間がかかることを考慮し、slackやnginxの再起などが問題なく行なわれることよう配慮したものですが、効果の程はわかりません。。。(どこかのブログで見たので真似してみました)
所感
- オプションが多いけどちゃんと目を通す
- ログを見る
- 発行制限に気をつける→取得できるかのテスト用のコマンドがあった気がします
以上を注意深く行えばもう少し早く解決できたような気がします。