咱们的项目要拿到客户机上作私有化安装,服务器操做系统客户指定只能使用redhat7.2版本,且客户机为了保密须要不能访问外网,而操蛋的redhat系统自带的curl支持的是nss协议的https,而非openssl协议的https,执行curl访问https站点的时候会出现没法load key的报错。
网上查了一下解决方案,Stack Overflow上有答案说是生成的key的问题,须要将key转换成RSA的加密方式,我试了一下,curl命令不会报错,但咱们的服务端代码实现不能正常的初始化相关加解密容器。
还有部分答案推荐重装curl,因为对redhat系统并不熟悉,且向来据说linux上离线安装的时候须要处理的依赖比较复杂,个人心里实际上是拒绝的,但没有更好的解决办法,只能硬着头皮上了。。。linux
./configure make test make install #这里安装的是静态库 make clean ./configure --shared make test make install #这里先clean,而后安装的是共享库 cp zutil.h /usr/local/include cp zutil.c /usr/local/include #拷贝相关文件
./config --prefix=/usr/local/ssl shared zlib-dynamic #指定openssl的安装目录,建立动态库,并在须要的时候动态引用zlib文件(感受我理解很肤浅且有问题,但愿能够有大神给透彻的解答下这条命令的具体含义) ./config -t #好像没什么卵用,就是输出下操做系统的相关信息 make #我执行这句的时候报错了,大意就是找不到相关的动态库,网上搜了一圈没有找到什么合适的答案,邃本身修改了下Makefile,在gcc的指定中添加了-fPIC选项,注意,因为make了一半报错,因此须要先执行 **make clean** 而后再从新make,若是一上来就修改了Makefile,能够不用执行 **make clean** make test #执行这句的时候我这边也报错了,意思是Conditional.pm这个模块找不到,在网上搜了一圈,居然找不到合适的答案,我只想说我对redhat真的是无力吐槽了,缺的东西也太多了,就这还能挣钱,不过说不定也就是靠这些挣钱了。。无奈且无助的我只能无视报错了,直接执行下一步 make install #感谢上帝佛祖保佑,上面的报错只是test的时候引发的,install居然没有报错安装成功了!
./configure --prefix=/usr/local/curl --with-ssl #指定安装目录,指定使用openssl进行编译, 这里并无指定上面安装的openssl的具体路径, 猜想安装脚本里会自动到/usr/local/lib以及其余目录下查找相关文件(有熟悉c++的同窗能够给解释下) make make install #很神奇,居然没报错,我都不适应了。。
http://blog.csdn.net/baitianhai/article/details/155461 安装zlib和openssl不少都是参考的这个
http://www.linuxidc.com/Linux/2014-11/109910.htmc++