FreeBSD Ports の INDEX 取得に失敗するようになった。
これは、Let’s EncryptのルートCA期限切れって奴だな。
/usr/bin/env fetch -ar -o /usr/ports/INDEX-13.bz2 https://www.FreeBSD.org/ports/INDEX-13.bz2
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34374492160:error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/statem/statem_clnt.c:1915:
うちの openssl は、システム標準の
OpenSSL 1.1.1k-freebsd 24 Aug 2021
だし、どこかに古いルートCA証明書が残ってるんだな…
FreeBSD Ports security/ca_root_nss
をインストールしているのだが、以下の3か所にあることが判明
/etc/ssl/cert.pem
/usr/local/etc/ssl/cert.pem
/usr/local/openssl/cert.pem
結局、
/usr/local/etc/ssl/cert.pem
こいつだけ古かった…
-rw-r--r-- 1 root wheel 951589 Jul 17 2015 cert.pem
3か所でファイルが異なるってもの気持ち悪い…
/etc/ssl/cert.pem
は、/usr/local/share/certs/ca-root-nss.crt
へのシンボリックリンクで、/usr/local/etc/ssl/
と/usr/local/openssl/
には、/usr/local/share/certs/ca-root-nss.crt
へのシンボリックリンクであるcert.pem.sample
がある。
そんなわけで、
# cd /usr/local/etc/ssl/
# cp -p cert.pem.sample cert.pem
# cd /usr/local/openssl/
# cp -p cert.pem.sample cert.pem
で解決!
ディレクトリ内に cert.pem
があると上書きされない仕様だったようだ。