LetsEncryptのcertbot自動更新エラー

server, サービス, ブログ

突然やってきたLet’s Encryptからのメール。

Let’s Encrypt certificate expiration notice for domain “pc-taskal.net”

 

 

あと19日で証明書の期限が切れますよと。

cronに仕込んで自動更新にしてあるので大丈夫だろうと思っていたのですが、そろそろ更新されただろうとログを見てみると・・・

どうやらサイトのSSL証明書のcertbotによる自動更新がエラーで出来ない状態になっていました。

 

エラーの内容

certbotのログは /var/log/letsencrypt/letsencrypt.log にあります。

問題となっている箇所を一部摘出してみると・・・

 

どうもdefault-ssl.conf あたりに問題がありそうです。
そしてプラグインが問題の元凶なのかなと想像できますね。

スポンサーリンク


apache2の設定ファイルに問題がないか確認

apache2の設定ファイルの確認する以前に、ちゃんと起動しているので設定ファイルに問題は無いはずです。

念の為確認します。

 

どうやら問題ないようです。

 

手動で更新確認してみる

certbotコマンドを手動で実行し確認してみます。

 

やはりプラグインエラーとSyntax errorになります。

こうなると設定ファイルを確認するしかありません。

 

問題のファイルを確認

ログから問題のファイルは default-ssl.conf だということがわかります。

ですのでこのファイルか、その関連ファイルの問題と思われます。

そして、プラグインエラーとなっているので、このファイルで使っているプラグインはSSLしかありませんので、そのあたりが怪しいです。

Syntax errorと出ているので、どこか構文が間違っているのでしょうか。

はじめのちは全然気付かなかったのですが、発見しました。

このファイルは初期状態だと

<IfModule mod_ssl.c>
<VirtualHost _default_:443>

で始まっていると思います。

そうなると終わりは

</VirtualHost>
</IfModule>

となるはずなのですが、何かの拍子に消してしまったのでしょうか、</IfModule> の閉じタグがありません。
モジュールのタグが閉じていないのでエラーになっていたようです。

スポンサーリンク

修正して再度実行

修正して再度ドライランしてみると問題なく完走。

更新を実行します。

 

成功です。

証明書もちゃんと更新されました。

 

自動更新の注意点

Let’s Encrypt は3ヶ月ごとに更新しないといけないので面倒ですが、自動で更新してくれるのでcronに仕込んでおけば安心だと思っていると大間違いでした。

期限があるうちの動作と、期限が近づいてきた時の動作は違うので、実際の更新作業が入る時期になると挙動が変わります。

期限のあるうちはエラーが無かったので安心という訳にはいかず、実際に更新が自動で行われるか確認が必要です。

特に初回の更新は注意が必要ですね。

あと、certbot自体もPythonで書かれているので、pythonのアップデートなどがあった場合も注意しておいたほうが良さそうです。

自動だから安心ではなく、期限が切れる前にちゃんと自分で確認しておいたほうが良さそうですね。

 

 

 

スポンサーリンク