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

セキュリティ 2018.08.19

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

Tags: ,,,

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 ユーザーガイド

この記事を書いた人

オガワ シンヤ

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

  • Twitter

コメントフォーム

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。

内容に問題なければ、お名前・ハンドルネームとメールアドレスを入力いただき、下記の「コメントを送信」ボタンを押してください。

CAPTCHA


この記事もよく読まれています

Scroll to Top
ご質問・ご相談はありませんか ?