PHPが使う curl を NSS から OpenSSLにする
PHPが使うCurl のバージョンを NSS から OpenSSL にします。Ubuntu20~などではもともとOpenSSLのようですが、CentOS7 とかだと 対応が必要です。
まずは環境把握
まずは curl -V や phpinfo() などで環境把握です。
以下は例です
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
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 になりました。