首页 > 代码库 > 添加curl的openssl的功能,实现https的正确访问
添加curl的openssl的功能,实现https的正确访问
公司开发部遇到一个难题,服务器环境的curl的功能参数无法支持ssl,那么很多功能将会无法实现。那么好吧,这个问题只好抛到运维这边了,我也是个新手,下边的见解纯属个人分析(如有问题,欢迎讨论):
首先系统:Centos 6.5 x86_64,
服务器版本的默认安装路径:curl在/usr下,openssl在/usr下 (当然,版本都是挺低的,yum更新后,版本还是很低,而且理所当然的,yum安装是无法带参数的,那么很显然,更新后curl还是无法支持openssl)
安装所有常用的开发包yum -y install ntp make openssl openssl-devel pcre pcre-devel libpng libpng-devel libjpeg-6b libjpeg-devel-6b freetype freetype-devel gd gd-devel zlib zlib-devel gcc gcc-c++ libXpm libXpm-devel ncurses ncurses-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel imake autoconf automake screen sysstat compat-libstdc++-33 curl curl-devel python
(这个是为了以防删掉openssl或者curl的时候出现各种问题的时候,你还有合适的工具可以修复,不要小看以上的东西,如果你试过yum和rpm和wget,scp甚至是ssh都不能使用的时候,你就会发现,做好一个备份和安装好必要的环境是多么的重要)
卸载旧版本
rpm -e --nodeps curl
yum install curl -y
添加ssl库的快速读取识别
vi /etc/ld.so.conf
在这里面将openssl生成的库文件所在目录加入,使用命令ldconfig刷新缓存
【
这里用find / -name openssl查看安装目录,然后找到库文件目录,这里是/usr/lib64/openssl/)
(这里如果不添加以上的ssl库参数,那么你在configure会提示
SSL support: enabled (OpenSSL)
当然,我们是应该很开心的,但是,在make和make install的时候,你会发现扯淡的是
curl -V
curl 7.37.0 (x86_64-unknown-linux-gnu) libcurl/7.37.0 zlib/1.2.3 libidn/1.18
根本就没有openssl的支持好不好!,这是一个很蛋疼的事情,为此我尝试了多个版本,用正确的编译方式,结果都是前边支持,后边不支持。当然,还是有偶然的机遇下,在多个版本的安装和卸载后,测试机完美的运行了。当然,这也是我花了一个礼拜的时间坚持下的原因,要不是我偶然成功了,谁会花这么多的时间琢磨这一个问题呢。当然,我记录了测试机的安装步骤,但是。。在线上机根本就运行不了,同样的系统,同样的配置,同样的软件,同样的操作,这也是我总结出,我的方法可能只是偶然找到ssl的库文件了。
】
安装新版本的curl
wget http://curl.haxx.se/download/curl-7.37.0.tar.gz (当然,这个路径换一个版本号就可以下载其他版本,测试32位直接安装成功,64位还需要添加以上的ssl库快读参数)
./configure --prefix=/usr --with-ssl=/usr (必须确认ssl的安装路径,而且必须添加这个参数,默认无)
make
make install
【
这些安装的时候就会找到ssl的库文件,那么就可以编译成功的了
】
curl -V
满足条件 libcurl/7.37.0 OpenSSL/1.0.1e同时识别,整个环境所使用的curl就具备了支持ssl的功能了
【还有要注意的是,如果不行,可以重复第二遍新版本的重新编译,当然第三遍不行就不用了,可以试试看其他版本,我是7.36和7.37其中一个可以用的】