源代碼編譯curl非区,讓其支持nss

這是近期關(guān)于 Curl、NSS 最后一篇文章盹廷,客觀的說征绸,國內(nèi)對于這方面(尤其是 NSS)的知識介紹的非常少,很多人可能會使用 Curl俄占,但并不知道它是如何支持 HTTPS 協(xié)議的歹垫,一旦遇到 Curl 不能請求 HTTPS 網(wǎng)站的時(shí)候,就抓蝦了颠放。網(wǎng)絡(luò)上也充斥著各種不嚴(yán)謹(jǐn)?shù)奈恼屡挪遥寣@方面感興趣的技術(shù)人員望而卻步,如果你耐心看完我最近寫的一系列文章碰凶,相信必然會所收獲暮芭。

前面幾篇文章都使用 Linxu 發(fā)行版的包安裝方式介紹 Curl鹿驼、OpenSSL、NSS辕宏,包安裝方式的好處就在于安裝方便畜晰,但也屏蔽了很多技術(shù)細(xì)節(jié),一旦在使用中遇到問題瑞筐,可能就不知道如何解決了凄鼻。

這篇文章很簡單,就是源代碼安裝 Curl聚假,讓其支持 NSS 密碼學(xué)庫块蚌,從而進(jìn)一步加深對 NSS 的理解。

為了讓 Curl 編譯支持 NSS膘格,有以下幾個關(guān)鍵點(diǎn):

  • 下載峭范、配置、編譯瘪贱、安裝 Curl纱控。
  • Curl 的 HTTPS 功能支持依賴于 NSS,所以也需要源代碼安裝 NSS菜秦。

如果你不知道如何編譯安裝 NSS甜害,那么必須查看這篇文章《初識NSS,一文了解全貌》球昨,現(xiàn)在假設(shè)編譯后的 NSS 保存在 /root/nssproject/ 目錄下唾那。

接下去跟隨我一步步編譯把。

1:下載 Curl 源代碼褪尝。

下載 curl-7.61.0.tar.gz:

$ wget "https://curl.haxx.se/download/curl-7.57.0.tar.gz"
$ tar xvf curl-7.57.0.tar.gz
$ cd curl-7.57.0
$ ./configure -h 

2:配置

運(yùn)行下列命令:

$ export LD_LIBRARY_PATH='/root/nssproject/dist/Linux3.13_x86_64_cc_glibc_PTH_64_OPT.OBJ/lib'

$ ./configure --prefix=/opt/curlnss --with-nss=/root/nssproject/dist/Linux3.13_x86_64_cc_glibc_PTH_64_OPT.OBJ/  --without-ssl 

其中 --without-ssl 表示禁止安裝 OpenSSL闹获;--prefix 表示將 Curl 安裝到特定的目錄;--with-nss 表示 NSS 安裝目錄河哑。

切記:

  • LD_LIBRARY_PATH 變量一定要設(shè)置避诽,否則編譯的時(shí)候不會找到 NSS。
  • 命令行最后一行輸出如果出現(xiàn) HTTPS IMAP IMAPS璃谨,說明配置成功了沙庐。

3:編譯

然后運(yùn)行下列命令編譯:

$ make 

出現(xiàn)以下錯誤:

curl_ntlm_core.c:101:23: fatal error: pk11pub.h: No such file or directory
 #  include <pk11pub.h>
                       ^
compilation terminated.

提示不能找到一個頭文件,可以打開 lib/Makefile 文件佳吞,然后找到 CPPFLAGS 變量拱雏,如下:

CPPFLAGS = -I/root/nssproject/dist/Linux3.13_x86_64_cc_glibc_PTH_64_OPT.OBJ//include -I/usr/local/include 

將其修改為:

CPPFLAGS = -I/root/nssproject/dist/Linux3.13_x86_64_cc_glibc_PTH_64_OPT.OBJ//include -I/usr/local/include -I/root/nssproject/dist/public/nss

4:安裝

編譯成功后,運(yùn)行如下命令安裝:

$ make install

5:測試

安裝完成后底扳,測試是否成功:

$ /opt/curlnss/bin/curl -V

curl 7.57.0 (x86_64-pc-linux-gnu) libcurl/7.57.0 NSS/3.38 Beta zlib/1.2.8 nghttp2/1.31.0-DEV
Release-Date: 2017-11-29
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz HTTP2 UnixSockets HTTPS-proxy

需要注意的是 curl 使用的根證書铸抑,運(yùn)行 curl-config 工具(源代碼編譯生成的):

$ opt/curlnss/bin/curl-config --ca
    /etc/ssl/certs/ca-certificates.crt

那么 ca-certificates.crt 這個文件是誰生成的?源代碼編譯并不包含這文件衷模,如果你看了我的系列文章鹊汛,那么就很容易理解了蒲赂,可以使用 ca-certificates 包安裝 CA 根證書,也可以手動下載 Mozilla 的 CA 根證書刁憋。

相關(guān)系列文章:

關(guān)注我的公眾號(yudadanwx饺汹,虞大膽的嘰嘰喳喳)蛔添,了解我最新的博文痰催。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市迎瞧,隨后出現(xiàn)的幾起案子夸溶,更是在濱河造成了極大的恐慌,老刑警劉巖凶硅,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缝裁,死亡現(xiàn)場離奇詭異,居然都是意外死亡足绅,警方通過查閱死者的電腦和手機(jī)捷绑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氢妈,“玉大人粹污,你說我怎么就攤上這事∈琢浚” “怎么了壮吩?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長加缘。 經(jīng)常有香客問我鸭叙,道長,這世上最難降的妖魔是什么拣宏? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任沈贝,我火速辦了婚禮,結(jié)果婚禮上勋乾,老公的妹妹穿的比我還像新娘缀程。我一直安慰自己搜吧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布杨凑。 她就那樣靜靜地躺著滤奈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撩满。 梳的紋絲不亂的頭發(fā)上蜒程,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機(jī)與錄音伺帘,去河邊找鬼昭躺。 笑死,一個胖子當(dāng)著我的面吹牛伪嫁,可吹牛的內(nèi)容都是我干的领炫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼张咳,長吁一口氣:“原來是場噩夢啊……” “哼帝洪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起脚猾,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤葱峡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后龙助,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砰奕,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年提鸟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了军援。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡称勋,死狀恐怖胸哥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铣缠,我是刑警寧澤烘嘱,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站蝗蛙,受9級特大地震影響蝇庭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捡硅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一哮内、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦北发、人聲如沸纹因。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞭恰。三九已至,卻和暖如春狱庇,著一層夾襖步出監(jiān)牢的瞬間惊畏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工密任, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颜启,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓浪讳,卻偏偏與公主長得像缰盏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子淹遵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容