無料で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サーバを停止して実行すればすんなり終わるというオチでした。