管理しているFreeBSDマシンのいくつかで、weekly.localがロックしたまま延々終わらないと言うことが発生。
調べてみると、portsdb -FuがSSLの以下のエラーでリトライが終わらなくなっている模様。(エラー吐いてる実体はfetchコマンド)
Certificate verification failed for /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
あーなんかLet’s Encryptのルート証明書が変わるとかなんとかどっかで聞いたな…と思いつつ、定番のca_root_nssを更新して見るも状況に変化なし。はて?
結論としては、/usr/local/etc/ssl/cert.pemファイルを削除して解決。
FreeBSDシステムには証明書は以下の3つがあり、ca_root_nssをインストールすると一つ目はシンボリックリンク張ってくれるけれど、二つ目・三つ目はcert.pem.sampleの名前でしかシンボリックリンク作ってくれない。
/etc/ssl/cert.pem /usr/local/etc/ssl/cert.pem /usr/local/openssl/cert.pem
で、どういうわけか、比較的古いバージョンからアップデートしてきたマシンだと、下二つのcert.pemファイルの中身が空っぽ。
いやいや空っぽってどういうこと?!比較的新しい日付なんで、どうも最近消されたっぽい感じ。
そして、問題なくアップデート出来ている割と新しめのバージョンから使ってるマシンでは、シンボリックリンクではなく比較的新しい証明書の実体が入っている。何でやねん…。
まぁ、ca_root_nssインストール時に、
You may need to manually remove /usr/local/etc/ssl/cert.pem if it is no longer needed. You may need to manually remove /usr/local/openssl/cert.pem if it is no longer needed.
って出てるので、ちゃんと読まなかった方も悪いんですが。
とりあえず解決したものの、同じバージョンのOSでもcert.pemの中身が違ったり、システムがportsのca_root_nssに証明書を全依存してるのってセキュリティ的にどうなの?とかモヤモヤするところです。
FreeBSDって古いバージョンからアップデートで使い続けてると、こういうわかりにくいトラブルが割と起こります。そのあたりどのOSでも似たようなもんですかね。