咱們的項目要拿到客戶機上作私有化安裝,服務器操做系統客戶指定只能使用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++