Let’s EncryptのSSL証明書更新失敗!エラー対処法

無料でSSL証明書が利用できるLet’s Encrypt。

導入が面倒くさいという話も聞きますが、それほど難易度は高くありませんよ。

すでに有志たちがいろいろと試行錯誤して導入した情報は、ネット上にあふれてますので、あまり構えなくても大丈夫です。

今回はLet’s Encryptの更新で結構苦戦したので、その情報を共有しておきます。

Let’s Encryptの更新エラー

Let’s Encryptの有効期限

まず無料SSL証明書のLet’s Encryptですが、導入後3か月で有効期限が切れてしまいます。

ですが、後進の手続きをすれば継続して使用は可能ですので、3か月ごとに更新する必要があります。

更新する方法は、Let’s Encryptのポータルサイトでも紹介されいる通り、Certbotというツールを使用して簡単に更新できます。

とはいえ、3か月に1回手動で更新するのも手間なので、Cronで自動化しておいたんですが・・

どうやらエラーになってるらしい。

てことで手動で実行しに行ったのですが・・・エラーが止まらんw

エラー対処法

まず今回対応したサーバ構成をお伝えしておきます。

OS:CentOS7.4

Webサーバ:nginx

https通信をnginxで受けて、Tomcatへリダイレクトする構成。

どうやらこのリダイレクトがいけないみたい。

何度やっても以下のようにエラーになってしまう。

All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/www.hogehoge.net/fullchain.pem (failure)

Let’s Encryptを導入する時は、リダイレクト設定とかせず、極力デフォルト設定だったのでひとまずその設定に戻すことに。

てことでリダイレクト設定を消すが上手くいかない。

どうもhttp通信の許可が必要?

ってことでFirewalldを葬り、LBにも80番の許可設定を追加。

それでもまだエラー。

nginxを止めないとダメ?

nginxも葬り再実行したところようやく正常終了。

Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/www.hogehoge.net/fullchain.pem (success)

以下のメッセージが表示されれば完了です。

てことで以下に手順を整理しときます。

①リダイレクト等の設定は解除し、nginxは極力デフォルト設定にする。

※デフォルトとはいえserver_nameだけはドメイン名を入力しておく。

②Firewalldは停止する。

③nginxを停止する。

④certbot-auto renew –force-renewalコマンド実行

⑤以下コマンドで更新を確認

openssl x509 -noout -dates -in cert.pem
notBefore=Sep 30 17:12:47 2018 GMT
notAfter=Dec 29 17:12:47 2018 GMT ←更新されている。

Http通信を許可して、Webサーバを停止して実行すればすんなり終わるというオチでした。