https之我的理解

多為搬運(yùn)匯總昆淡,加上自己的總結(jié),方便以后復(fù)習(xí)回顧盒件,參考資料在最下面蹬碧,感謝各位博主力作,希望以后自己也能寫出深入淺出有條理的文章炒刁,提升自己幫助他人恩沽。

首先是http的缺點(diǎn)

  1. 通信使用明文;第三方可以獲知通信內(nèi)容翔始。
  2. 不驗(yàn)證通信方的身份罗心;第三方可以冒充他人身份參與通信。
  3. 無(wú)法驗(yàn)證報(bào)文的完整性城瞎;第三方可以修改通信內(nèi)容渤闷。

因此確保安全通信的三個(gè)原則

  1. 數(shù)據(jù)內(nèi)容的加密
  2. 通訊雙方的身份校驗(yàn)
  3. 數(shù)據(jù)內(nèi)容的完整性

因此誕生了https:Https = Http + 加密 + 認(rèn)證 + 完整性保護(hù)

TCP/IP協(xié)議族中已經(jīng)提供了一個(gè)用于數(shù)據(jù)安全傳輸?shù)膮f(xié)議——SSL(Secure Socket Layer)安全套接層,位于應(yīng)用層與傳輸層之間脖镀。SSL 提供認(rèn)證和加密處理及摘要功能飒箭,最初是由瀏覽器開(kāi)發(fā)商網(wǎng)景通信公司率先倡導(dǎo)的,后來(lái)的TSL 是以 SSL 為原型開(kāi)發(fā)的協(xié)議蜒灰,有時(shí)會(huì)統(tǒng)一稱該協(xié)議為 SSL弦蹂,當(dāng)前主流的版本是 SSL3.0 和 TLS1.0。
故再簡(jiǎn)化為Https = Http + SSL

相對(duì)于TCP或HTTP協(xié)議强窖,SSL協(xié)議要復(fù)雜很多凸椿。由于它也是建立在TCP協(xié)議之上的,所以在使用SSL傳輸數(shù)據(jù)之前需要先進(jìn)行三次握手和服務(wù)器建立連接翅溺,具體的流程如圖所示:

https.png

SSL協(xié)議的握手過(guò)程

  1. 客戶端先給服務(wù)端發(fā)送一個(gè)消息脑漫,消息內(nèi)容包括:客戶端支持的加密方式,支持的壓縮方法未巫,SSL的版本號(hào)窿撬,客戶端生成的隨機(jī)數(shù)启昧,文本內(nèi)容“Hello”等叙凡;
  2. 服務(wù)端接收到消息后,也回發(fā)一個(gè)Hello密末,并攜帶從客戶端支持的加密方式中選擇的加密方式握爷,服務(wù)端生成的隨機(jī)數(shù)跛璧,服務(wù)端的SSL版本號(hào)等信息;
  3. 隨后服務(wù)器給客戶端發(fā)送一個(gè)Certificate報(bào)文新啼,報(bào)文中包含服務(wù)端的公鑰證書追城;
  4. 緊接著服務(wù)器給客戶端發(fā)送Server Hello Done, 表示最初的協(xié)商握手過(guò)程結(jié)束;
  5. 客戶端接收到服務(wù)端發(fā)送的握手結(jié)束的消息后燥撞,以Client Key Exchange作為回應(yīng)座柱,此報(bào)文中包含通信加密過(guò)程中使用的一種被稱為Pre-master secret的隨機(jī)密碼串,并使用第三步接收到的公鑰證書進(jìn)行了加密物舒;
  6. 接著客戶端發(fā)送Change Cipher Spec報(bào)文色洞,該報(bào)文告知服務(wù)端,此步驟之后的所有數(shù)據(jù)將使用第五步中生成的master secret進(jìn)行加密(master secret的生成過(guò)程看后面的介紹)冠胯;
  7. 隨后客戶端發(fā)送Finish報(bào)文火诸,此報(bào)文中包含連接至今所有報(bào)文的整體校驗(yàn)值,用于完整性驗(yàn)證荠察;
  8. 服務(wù)端接收到客戶端發(fā)送的Change Cliper Spec報(bào)文后置蜀,同樣以Change Cliper Spec報(bào)文作為回應(yīng);
  9. 接著服務(wù)端發(fā)送Finish報(bào)文給客戶端悉盆,表示服務(wù)端已正確解析客戶端發(fā)送的整體校驗(yàn)值盯荤,至此,SSL握手的過(guò)程結(jié)束焕盟。
  10. 隨后開(kāi)始使用HTTP協(xié)議傳輸使用master secret加密過(guò)的數(shù)據(jù)廷雅。

為了解決安全和效率問(wèn)題,SSL使用了對(duì)稱加密(加密和解密使用同樣的密鑰)和非對(duì)稱加密(公鑰加密京髓,私鑰解密)組合的方式:使用非對(duì)稱加密的方式傳輸對(duì)稱加密中生成密鑰的種子(pre master secret)【對(duì)應(yīng)上面的第五步】航缀,然后使用對(duì)稱加密的方式對(duì)通信數(shù)據(jù)進(jìn)行加密【對(duì)應(yīng)上面的第十步】,既保障了密鑰的安全性堰怨,也提高了加密速度芥玉。

歸納ssl五次握手,或四次(將4备图、5合并)

  1. 客戶端請(qǐng)求建立SSL鏈接灿巧,并向服務(wù)端發(fā)送協(xié)議版本號(hào)、一個(gè)隨機(jī)數(shù)–Client random和客戶端支持的加密方法揽涮,比如RSA公鑰加密抠藕,此時(shí)是明文傳輸。
  2. 服務(wù)端回復(fù)一種客戶端支持的加密方法蒋困、一個(gè)隨機(jī)數(shù)–Server random盾似、授信的服務(wù)器證書和非對(duì)稱加密的公鑰。
  3. 客戶端收到服務(wù)端的回復(fù)后雪标,確認(rèn)數(shù)字證書有效零院,然后生成新的隨機(jī)數(shù)–Premaster secret 通過(guò)服務(wù)端下發(fā)的公鑰及加密方法進(jìn)行加密溉跃,發(fā)送給服務(wù)器。
  4. 服務(wù)端收到客戶端的回復(fù)告抄,利用自己的私鑰解密獲得Premaster secret撰茎,
  5. 服務(wù)端利用Client random、Server random和Premaster secret通過(guò)一定的算法生成HTTP鏈接數(shù)據(jù)傳輸?shù)膶?duì)稱加密key – session key(包含于上面提到的master secret中)打洼,用來(lái)加密接下來(lái)的整個(gè)對(duì)話過(guò)程龄糊。

握手階段有三點(diǎn)需要注意。

  1. 生成對(duì)話密鑰一共需要三個(gè)隨機(jī)數(shù)募疮。
  2. 握手之后的對(duì)話使用"對(duì)話密鑰"加密(對(duì)稱加密)绎签,服務(wù)器的公鑰和私鑰只用于加密和解密"對(duì)話密鑰"(非對(duì)稱加密),無(wú)其他作用
  3. 服務(wù)器公鑰放在服務(wù)器的數(shù)字證書之中酝锅。

Master secret與session key
由于服務(wù)端和客戶端都有一份相同的PreMaster secret和隨機(jī)數(shù)诡必,這個(gè)隨機(jī)數(shù)將作為后面產(chǎn)生Master secret的種子,結(jié)合PreMaster secret搔扁,客戶端和服務(wù)端將計(jì)算出同樣的Master secret爸舒。
Master secret是有系列的hash值組成的,它將作為數(shù)據(jù)加解密相關(guān)的secret的Key Material稿蹲。Master secret最終解析出來(lái)的數(shù)據(jù)如下:
其中扭勉,write MAC key,就是session secret或者說(shuō)是session key苛聘。
Client write MAC key是客戶端發(fā)數(shù)據(jù)的session secret涂炎,Server write MAC secret是服務(wù)端發(fā)送數(shù)據(jù)的session key。MAC(Message Authentication Code)设哗,是一個(gè)數(shù)字簽名唱捣,用來(lái)驗(yàn)證數(shù)據(jù)的完整性,可以檢測(cè)到數(shù)據(jù)是否被串改网梢。

證書
證書由值得信任的第三方機(jī)構(gòu)頒發(fā)震缭,用以證明服務(wù)器和客戶端是實(shí)際存在的。
現(xiàn)在主要還是客戶端去檢驗(yàn)服務(wù)端的證書战虏,客戶端的證書還不夠普及拣宰,如銀行的網(wǎng)上銀行就需要客戶端證書。

HTTPS 比 HTTP 要慢 2 到 100 倍
SSL 的慢分兩種烦感。一種是指通信慢巡社。另一種是指由于大量消耗CPU 及內(nèi)存等資源,導(dǎo)致處理速度變慢手趣。
和使用 HTTP 相比晌该,網(wǎng)絡(luò)負(fù)載可能會(huì)變慢 2 到 100 倍。除去和TCP 連接、發(fā)送 HTTP 請(qǐng)求 ? 響應(yīng)以外气笙,還必須進(jìn)行 SSL 通信,
因此整體上處理通信量不可避免會(huì)增加怯晕。另一點(diǎn)是 SSL 必須進(jìn)行加密處理潜圃。在服務(wù)器和客戶端都需要進(jìn)行加密和解密的運(yùn)算處理。因此從結(jié)果上講舟茶,比起 HTTP 會(huì)更多地消耗服務(wù)器和客戶端的硬件資源谭期,導(dǎo)致負(fù)載增強(qiáng)。
針對(duì)速度變慢這一問(wèn)題吧凉,并沒(méi)有根本性的解決方案隧出,我們會(huì)使用SSL 加速器這種(專用服務(wù)器)硬件來(lái)改善該問(wèn)題。該硬件為SSL 通信專用硬件阀捅,相對(duì)軟件來(lái)講胀瞪,能夠提高數(shù)倍 SSL 的計(jì)算速度。僅在 SSL 處理時(shí)發(fā)揮 SSL 加速器的功效饲鄙,以分擔(dān)負(fù)載凄诞。

補(bǔ)充

從URL輸入到頁(yè)面展現(xiàn)到底發(fā)生什么?

  1. DNS 解析:將域名解析成 IP 地址
  2. TCP 連接:TCP 三次握手
  3. 發(fā)送 HTTP 請(qǐng)求
  4. 服務(wù)器處理請(qǐng)求并返回 HTTP 報(bào)文
  5. 瀏覽器解析渲染頁(yè)面
  6. 斷開(kāi)連接:TCP 四次揮手
三次握手

四次揮手

四次揮手

參考資料
Https詳解
圖解SSL/TLS協(xié)議-阮一峰
圖解HTTP(書)
從URL輸入到頁(yè)面展現(xiàn)到底發(fā)生什么忍级?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帆谍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子轴咱,更是在濱河造成了極大的恐慌汛蝙,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朴肺,死亡現(xiàn)場(chǎng)離奇詭異窖剑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)戈稿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門苛吱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人器瘪,你說(shuō)我怎么就攤上這事翠储。” “怎么了橡疼?”我有些...
    開(kāi)封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵援所,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我欣除,道長(zhǎng)住拭,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮滔岳,結(jié)果婚禮上杠娱,老公的妹妹穿的比我還像新娘。我一直安慰自己谱煤,他們只是感情好摊求,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著刘离,像睡著了一般室叉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上硫惕,一...
    開(kāi)封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天茧痕,我揣著相機(jī)與錄音,去河邊找鬼恼除。 笑死踪旷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的豁辉。 我是一名探鬼主播埃脏,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼秋忙!你這毒婦竟也來(lái)了彩掐?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灰追,失蹤者是張志新(化名)和其女友劉穎堵幽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體弹澎,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朴下,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苦蒿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殴胧。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖佩迟,靈堂內(nèi)的尸體忽然破棺而出团滥,到底是詐尸還是另有隱情,我是刑警寧澤报强,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布灸姊,位于F島的核電站,受9級(jí)特大地震影響秉溉,放射性物質(zhì)發(fā)生泄漏力惯。R本人自食惡果不足惜碗誉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望父晶。 院中可真熱鬧哮缺,春花似錦、人聲如沸甲喝。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)俺猿。三九已至茎匠,卻和暖如春格仲,著一層夾襖步出監(jiān)牢的瞬間押袍,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工凯肋, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谊惭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓侮东,卻偏偏與公主長(zhǎng)得像圈盔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悄雅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353