9月末でLet's Encryptのルート証明書が切り替わり、ISRG Root X1というものに変わりました。
それに伴ってサーバーの方も確認しなければならなかったのですが、直前にca-certificatesのアップデートが来てたのでてっきり新しいルート証明書に対応していると思ってました。
いざLet's Encryptを使ったサイトにwgetでアクセスしたらエラーが。
ということでいくつか試して解決するかやってみました。
旧ルート証明書を無効化する
一番ベターな方法です。普通は、これがca-certificatesのアップデート時に行われているはずです。
ブラックリストに入ってるはずなので /etc/ca-certificates.conf
を見てみます。
!mozilla/DST_Root_CA_X3.crt
ちゃんと「!」が付いているので無効化されていました。
それにISRG Root X1も追加されてました。
それなのにおかしい。
証明書ファイルを消してみる
解決できなかったので、straceコマンドでwgetがどんな挙動をしているか見てみました。
すると、
stat("/usr/local/ssl/certs/8d33f237.0", 0x7ffecc263f40) = 0
というログがあって、なにかのルート証明書を読み込んでいることが分かりました。
これが何なのか調べます。opensslコマンドで確認します。
$ openssl x509 -text -noout -in /usr/local/ssl/certs/8d33f237.0
なんとDST Root CA X1でした。なぜか読み込まれています。
このようなケースは稀と見られます。
ということで古いルート証明書を削除して、証明書ストアを更新します。
$ sudo rm /usr/local/ssl/certs/8d33f237.0
$ sudo update-ca-certificates
解決
再びwgetでletsencrypt.orgにアクセスできるか試したところ、うまく行きました。
今回は極めてレアケースであったため記事にしましたので、参考になればと思います。