twitter facebook

PHPが使う curl を NSS から OpenSSLにする

PHPが使うCurl のバージョンを NSS から OpenSSL にします。Ubuntu20~などではもともとOpenSSLのようですが、CentOS7 とかだと 対応が必要です。

まずは環境把握

まずは curl -V や phpinfo() などで環境把握です。
curl -V
以下は例です
curl 8.5.0 (x86_64-pc-linux-gnu) libcurl/8.5.0 OpenSSL/1.0.2k-fips zlib/1.2.7
php -r 'phpinfo();' | less
curl の SSL Version を探すと NSS でした
cURL support => enabled ~~~ SSL Version => NSS/3.90
phpinfo() でも見れます(下図)。
NSS となっているのを OpenSSL にします。
yum や apt などで curl を update できればいいですが、CentOS7ではできませんでしたので、curl を手動で コンパイルなどします。

curlのコンパイル~インストール

curl の ダウンロードは こちら から。
OSのデフォでは curl7系がインストール済みでしたので 7系の最新である 7.88 にしました。
wget https://curl.se/download/curl-7.88.1.tar.bz2
こちらの環境では wget で セキュリティエラーがでたので以下にします。
wget https://curl.se/download/curl-7.88.1.tar.bz2 --no-check-certificate
DLできたら 一気にインストールしますが configure のときに --with-ssl --enable-libcurl-option をつけました。 --enable-libcurl-option を付けることによって、 libcurl (単体のcurl だけでなく PHPなどで使う curl) もコンパイルされるようです。
sudo tar jxf curl-7.88.1.tar.bz2
cd curl-7.88.1
sudo ./configure --with-ssl --with-nghttp2 --enable-libcurl-option
sudo make
sudo make install
ライブラリにリンクする
echo '/usr/local/lib' > /etc/ld.so.conf.d/custom-libs.conf
ldconfig
which -a curl
curl -V
php -r 'phpinfo();' | less
などのコマンドで現状把握してください。

最後に確認

これで phpinfo などで見ると SSLVersion が NSSからOpenSSL になりました。
AUTHOR
@えのえの
最終更新日 2024/02/22
FAVORITE good stock
LINK TAG
記法を見る