まず、OpenSSLのビルドとは関係なく、システムワイドで使用するTLS証明書を確認しておきます。
証明書パッケージのインストール/更新
# pkg install ca_root_nss #インストール # pkg update ca_root_nss #更新 または、 # portmaster security/ca_root_nss #インストール/更新
FreeBSDのOSをインストールした直後またはOSのメジャーバージョンを更新した直後はOSによってインストールされた CA証明書ファイルが存在する(ことがある)ので確認します。
- /etc/ssl/cert.pem
- /usr/local/etc/ssl/cert.pem (OS新規インストール直後にはありません)
CA証明書のシンボリックリンクを確認/作成します。ln -sfでは元のファイルがあっても強制的にシンボリックリンクに置き換えます。
# ln -sf /usr/local/share/certs/ca-root-nss.crt /etc/ssl/cert.pem # ln -sf /usr/local/share/certs/ca-root-nss.crt /usr/local/etc/ssl/cert.pem
または、certctlで証明書ストアを再構築します。(シンボリックリンクは削除されca_root_nssで取得された実ファイルがコピーされます)
# certctl rehash
ca_root_nssを更新しても/etc/ssl/cert.pemと/usr/local/etc/ssl/cert.pemは更新されないため再度certctl rehashを実行する必要があります。
シンボリックリンクの方が手間が少なく実行忘れによる更新漏れがないかもしれません。
OpenSSLが使用する証明書を整備
PortsでインストールしたOpenSSLの3.5以降では、何故かOpenSSLが使用する証明書が適切に配置されません。(/usr/local/openssl下にCA証明書が配置されない)
これによりOpenSSLを使用して通信する場合にTLS証明書(CA証明書が無い)エラーが頻発します。
# /usr/local/bin/openssl version -a OpenSSL 3.5.5 27 Jan 2026 (Library: OpenSSL 3.5.5 27 Jan 2026) built on: Fri Jan 30 14:08:50 2026 UTC platform: BSD-x86_64 options: bn(64,64) compiler: cc -fPIC -pthread -Wa,--noexecstack -Qunused-arguments -O3 -pipe -funroll-loops -fPIC -fsta ck-protector-strong -fno-strict-aliasing -DL_ENDIAN -DOPENSSL_PIC -D_THREAD_SAFE -D_REENTRANT -DOPENSS L_BUILDING_OPENSSL -DNDEBUG OPENSSLDIR: "/usr/local/openssl" ENGINESDIR: "/usr/local/lib/engines-17" MODULESDIR: "/usr/local/lib/ossl-modules" Seeding source: os-specific CPUINFO: OPENSSL_ia32cap=0x4ff8e3bfefebffff:0x184001242394a2c3:0x00000000fc000400:0x0000000000000000:0 x0000000000000000
この例では OPENSSLDIR: "/usr/local/openssl" となっているため、/usr/local/opensslに証明書があるかを確認します。(エラーが発生している環境ではおそらく存在しない筈です)
OpenSSLのメインの証明書ファイルとしてリンクします。
# ln -sf /usr/local/share/certs/ca-root-nss.crt /usr/local/openssl/cert.pem
OpenSSLのcertsディレクトリ内にもリンクします。
# ln -sf /usr/local/share/certs/ca-root-nss.crt /usr/local/openssl/certs/ca-root-nss.crt
ハッシュリンクの作成
# /usr/local/bin/c_rehash /usr/local/openssl/certs
/usr/local/openssl/certs/に30e1580d.0 のようなハッシュでCA証明書ファイルへのリンクが作成されます。
おそらくports更新後に発生するようになったTLS証明書関係のエラーの多くは、OpenSSLのディレクトリにCA証明書(へのリンク)を置くだけで解決します。