owned mediaウェブ制作に役立つコンテンツを発信中!

Let’s Encryptの証明書更新に失敗した時の対処法とcronの自動更新設定

最終更新日: Update!!
SSL証明書の更新でリバースプロキシサーバーで運用していたため、ポート443のバインディングのエラーが出て更新に失敗していました。。
Attempting to renew cert (example.com) from /etc/letsencrypt/renewal/example.com.conf produced an unexpected error: Problem binding to port 443: Could not bind to IPv4 or IPv6.. Skipping.
  証明書の更新にはcronにスケジュールを設定して自動化していたので全く気付きませんでした、、過去記事「Let’s EncryptのSSL証明書にサブドメインもSSL対応に追加する」の時もこのエラーに関する内容にも触れていたのですが、すっかり忘れていました。気をつけないといけませんね。   解決方法は簡単で、ポート443を指定しているNginxを一旦停止させてから、証明書の更新を行うことで無事に更新ができました。もちろん、証明書を更新した後はNginxを再起動させておきます。
// Nginxの停止(ポート443)
# systemctl stop nginx

// SSL証明書の更新
# certbot renew

// Nginxの再起動
# systemctl restart nginx
  今回はcronでスケジュール設定を行なっていましたのでこちらも上記の内容に合わせる必要があります。crontabファイルに下記のスケジュールで登録しておきました。cronでの自動更新の方法については過去記事「無料SSL証明書のLet’s EncryptでVPSサーバーの常時SSL化」にもまとめています。
30 1 1 * * root certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" --quiet
30 2 1 * * root certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" --quiet
  毎月1日の1時30分と2時30分に、Nginxを停止させて証明書を更新し、Nginxを再起動させるというコマンドをスケジューリングした内容です。--pre-hookオプションと--post-hookオプションを使うことで1つにコマンドをまとめることができます。   また、証明書の更新ができるようになるのは期限の30日前からということなので、月一での設定にしました。cronを更新したら下記コマンドで再起動させることも忘れずに
# systemctl restart crond
  (参考にさせて頂いたサイト) "Problem binding to port 443"でLet’s Encryptの証明書更新に失敗した場合の対応メモ Let's Encrypt ユーザーガイド
  • はてなブックマーク
  • Pocket
  • Linkedin
  • Feedly

この記事を書いた人

Twitter

sponserd

    keyword search

    recent posts

    • Twitter
    • Github
    contact usscroll to top
      • Facebook
      • Twitter
      • Github
      • Instagram