Let'sEncryptの証明書自動更新に失敗し続けていたけど何とかした話

letsencryptの証明書自動更新(cron)とちょっとだけSlack連携 でかいたスクリプトは、手動で実行する場合は更新成功するのですが、cronで実行すると何故か毎回失敗するという問題作でした。

そこでスクリプトを見直し、何とか正しく動作するように改良してみました。

筆者はnginx+apacheのサーバー構成です。基本的には--webrootオプションを使って証明書発行や更新を行っています。

注:letsencryptのオプションについては各自の環境に読み替えて下さい。

スクリプト

前回との違いは、--force-renewというオプションを採用したところでしょうか。証明書の残りの有効期限に関係なく更新するというものです。

それからsleepという動作を指定時間停止させる処理を追記しました。 証明書発行に時間がかかることを考慮し、slackやnginxの再起などが問題なく行なわれることよう配慮したものですが、効果の程はわかりません。。。(どこかのブログで見たので真似してみました)

所感

  • オプションが多いけどちゃんと目を通す
  • ログを見る
  • 発行制限に気をつける→取得できるかのテスト用のコマンドがあった気がします

以上を注意深く行えばもう少し早く解決できたような気がします。

参考

Let's Encrypt ユーザーガイド