Make PHP curl use openssl instead of NSS

来自linux中国网wiki
跳到导航 跳到搜索

centos 6.5 系统PHP环境下的CURL库的SSL Version 从默认 NSS改为OpenSSL

升级 openssl and curl

[root@localhost awen]# openssl  version
OpenSSL 1.0.1e-fips 11 Feb 2013

如果你的是上面 ,来一次yum update,把openssl更新到最新版本

然后确认curl的ssl版本是不是openssl,centos默认安装的是NSS
[root@localhost ~]# curl -V 
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.21 Basic ECC zlib/1.2.7 libidn/1.28 libssh2/1.4.3

如果检测如上图的 NSS,而不是openssl,那么下载curl重新编译

wget https://curl.haxx.se/download/archeology/curl-7.19.7.tar.gz
tar xvzf curl-7.19.7.tar.gz
cd curl-7.19.7
./configure --prefix=/usr/local/curl/ --without-nss --with-ssl

sudo make -j3 && sudo make install


#备份默认的curl二进制文件
sudo mv /usr/bin/curl /usr/bin/curl.bak
#然后做一个新的curl软链
sudo ln -s /usr/local/curl/bin/curl /usr/bin/curl
#cp /usr/bin/curl-config  /usr/bin/curl-config.bak

#然后再curl --version确认是否已经是openssl的版本 如下 有openssl字样为OK 
[root@localhost awen]# curl -V
curl 7.19.7 (x86_64-unknown-linux-gnu) libcurl/7.19.7 OpenSSL/1.0.1e zlib/1.2.3 libidn/1.18 

编译安装php的curl扩展

1.insatall curl ext
wget -c http://my1.php.net/distributions/php-5.6.6.tar.bz2
tar xvf php-5.6.6.tar.bz2  &&  cd php-5.6.6/ext/curl/
/data/apps/php/bin/phpize
#phpize
#./configure --with-curl=/usr/local/curl/ --with-php-config=/usr/local/php/bin/php-config
./configure --with-curl=/usr/local/curl/ --with-php-config=/apps/php/bin/php-config
sudo make -j3  && sudo make install


Installing shared extensions:     apps/php/lib/php/extensions/no-debug-non-zts-20131226/

注意:如果原来安装过curl扩展,那么要先删除curl.so

2.在php.ini 添加如下信息

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo =
extension="curl.so"

3. 然后是把curl的lib添加到PATH中
echo "/usr/local/curl/lib/" >> /etc/ld.so.conf && ldconfig

4.最后重启 or reload 下php-fpm,再确认下phpinfo

或者不用打开phpinfo  因为线上一般 deny phpinfo 用如下命令就行了 
这样就是ok的啦 

[root@localhost awen]# /apps/php/bin/php -i | grep "SSL Version"
SSL Version => OpenSSL/1.0.1e


make PHP curl use openssl instead of NSS

参考

http://php.net/manual/en/book.curl.php

centos 6.5系统PHP环境下的CURL库的SSL Version默认为NSS,怎么变更为OpenSSL? https://segmentfault.com/q/1010000005596871


PHP命令行模式的相关参数详解 http://www.cnblogs.com/codebean/archive/2011/05/30/php-cli-argv.html

centos curl版本nss改成openssl http://www.cnblogs.com/showker/p/4706271.html

Linux php5 curl 扩展 http://blog.csdn.net/qingflyer/article/details/6546071

php5.2版本的curl的加密协议不是openssl二是NSS,怎么设置? https://community.jiguang.cn/t/php5-2-curl-openssl-nss/10466