SSLフリー認証局 Let’s Encrypt 更新エラー


4年ぶり更新です。60余齢でいまだにこんな鯖缶をやっている自分を褒めたい。
(還暦を過ぎたのでサブタイトルを変更しました。)

先日、管理している複数のCentOS7サーバで、こんなエラーを吐き出した。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
An unexpected error occurred:
SSLError: (“bad handshake: Error([(‘SSL routines’, ‘ssl3_get_server_certificate’, ‘certificate verify failed’)],)”,)
Please see the logfiles in /var/log/letsencrypt for more details.


どうやらLet’s Encrypt の更新エラーらしい。いくつかのSSLサイトで警告画面が出る。

困った。エラーは心臓に悪い。

こういうときのgoogle先生で、原因はLet’s Encrypt のルート証明書の仕様が変わったためで、「DST Root X3」が certbot で更新できなくなったとのこと。
「Let’s EncryptのルートCA証明書期限切れ、多数のサイトで問題発生」
 https://japan.zdnet.com/article/35177496/
「2021年にLet’s Encryptのルート証明書が変更!影響や備えておくべきこととは?」
 https://ssl.sakura.ad.jp/column/letsencrypt-root-certificate/

原因がわかれば対応方法があるはず。

いままでパッケージ管理yumでcertbotを更新していたが、このyumの標準パッケージが仕様変更に対応していない、ということがわかったので以下のようにパッケージ管理snapで対応した。

1.まずは既存のcertbotを削除する。
  # yum remove certbot

2.EPEL経由でsnapをインストール、起動、シンボリックリンク作成
  # yum install snapd
       # systemctl enable –now snapd.socket
  # ln -s /var/lib/snapd/snap /snap

3.snap経由でcoreをインストール、リフレッシュ
  # snap install core
  # snap refresh core

4.snap経由でcertbotをインストール、シンボリックリンク作成
  # snap install –classic certbot
  # ln -s /snap/bin/certbot /usr/bin/certbot

5.apache設定(virtualhostにconf.dを作成)←不要かも
  # certbot –apache

6.certbotを手動で更新(インストール時に自動更新cronがつくられる)←不要かも
  # certbot renew –dry-run

これでサーバを再起動したら、Let’s Encrypt の更新エラーを吐き出さなくなった。

安堵した。これで心拍数も下がるだろう。


ちなみに、virtualhostを何度か作りかえると、個々のvirtualhostでは問題ないが、cronで一括certbot renewの自動更新ができない場合がある。これは、以下ディレクトリに不要ファイルが残っているためで、実行途中でエラーを吐き出し以降の実行がキャンセルされてしまう。それら不要ファイルを削除すると問題なく自動更新ができる。当初これがわからず半日沼にはまった。
  /etc/letsencrypt/renewal/

 

Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です