cd /usr/ports/; make fetchindex に失敗する

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 があると上書きされない仕様だったようだ。

カテゴリー: FreeBSD タグ: , パーマリンク