深入淺出HTTPS基本原理

一、什么是HTTPS理疙,TLS晕城,SSL

HTTPS,也稱作HTTP over TLS窖贤。TLS的前身是SSL砖顷,TLS 1.0通常被標示為SSL 3.1,TLS 1.1為SSL 3.2赃梧,TLS 1.2為SSL 3.3滤蝠。下圖描述了在TCP/IP協(xié)議棧中TLS(各子協(xié)議)和HTTP的關系。

二授嘀、HTTP和HTTPS協(xié)議的區(qū)別

1物咳、https協(xié)議需要到證書頒發(fā)機構(Certificate Authority,簡稱CA)申請證書蹄皱,一般免費證書很少览闰,需要交費。

2夯接、http是超文本傳輸協(xié)議焕济,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議盔几。

3晴弃、http和https使用的是完全不同的連接方式,使用的端口也不一樣,前者是80,后者是443逊拍。

4上鞠、http的連接很簡單,是無狀態(tài)的 。

5芯丧、HTTPS協(xié)議是由SSL+HTTP協(xié)議構建的可進行加密傳輸芍阎、身份認證的網(wǎng)絡協(xié)議, 要比http協(xié)議安全缨恒。

從上面可看出谴咸,HTTPS和HTTP協(xié)議相比提供了

數(shù)據(jù)完整性:內(nèi)容傳輸經(jīng)過完整性校驗

數(shù)據(jù)隱私性:內(nèi)容經(jīng)過對稱加密,每個連接生成一個唯一的加密密鑰

身份認證:第三方無法偽造服務端(客戶端)身份

其中骗露,數(shù)據(jù)完整性和隱私性由TLS Record Protocol保證岭佳,身份認證由TLS Handshaking Protocols實現(xiàn)。

三萧锉、證書

1珊随、什么是證書呢?

2、證書中包含什么信息

證書信息:過期時間和序列號

所有者信息:姓名等

所有者公鑰

3叶洞、為什么服務端要發(fā)送證書給客戶端

互聯(lián)網(wǎng)有太多的服務需要使用證書來驗證身份鲫凶,以至于客戶端(操作系統(tǒng)或瀏覽器等)無法內(nèi)置所有證書,需要通過服務端將證書發(fā)送給客戶端衩辟。

4螟炫、客戶端為什么要驗證接收到的證書

中間人攻擊

5、客戶端如何驗證接收到的證書

為了回答這個問題惭婿,需要引入數(shù)字簽名(Digital Signature)不恭。

將一段文本通過哈希(hash)和私鑰加密處理后生成數(shù)字簽名。

假設消息傳遞在Bob财饥,Susan和Pat三人之間發(fā)生换吧。Susan將消息連同數(shù)字簽名一起發(fā)送給Bob,Bob接收到消息后钥星,可以這樣驗證接收到的消息就是Susan發(fā)送的

當然沾瓦,這個前提是Bob知道Susan的公鑰。更重要的是谦炒,和消息本身一樣贯莺,公鑰不能在不安全的網(wǎng)絡中直接發(fā)送給Bob。

此時就引入了證書頒發(fā)機構(Certificate Authority宁改,簡稱CA)缕探,CA數(shù)量并不多, ? ? ? ? ? ? ?Bob客戶端內(nèi)置了所有受信任CA的證書还蹲。CA對Susan的公鑰(和其他信息)數(shù)字簽名后生成證書爹耗。

Susan將證書發(fā)送給Bob后,Bob通過CA證書的公鑰驗證證書簽名谜喊。

Bob信任CA潭兽,CA信任Susan, 使得 Bob信任Susan斗遏,信任鏈(Chain Of Trust)就是這樣形成的山卦。

事實上,Bob客戶端內(nèi)置的是CA的根證書(Root Certificate)诵次,HTTPS協(xié)議中服務器會發(fā)送證書鏈(Certificate Chain)給客戶端账蓉。

正式開始HTTPS的內(nèi)容:

一、HTTPS的基本原理

從上面可知逾一,HTTPS能夠加密信息剔猿,以免敏感信息被第三方獲取。所以很多銀行網(wǎng)站或電子郵箱等等安全級別較高的服務都會采用HTTPS協(xié)議。HTTPS其實是有兩部分組成:HTTP +SSL/ TLS,也就是在HTTP上又加了一層處理加密信息的模塊烁设。服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)汪茧。具體是如何進行加密,解密限番,驗證的舱污,且看下圖。

1. 客戶端發(fā)起HTTPS請求

這個沒什么好說的弥虐,就是用戶在瀏覽器里輸入一個https網(wǎng)址扩灯,然后連接到server的443端口。

2. 服務端的配置

采用HTTPS協(xié)議的服務器必須要有一套數(shù)字證書霜瘪,可以自己制作珠插,也可以向組織申請。區(qū)別就是自己頒發(fā)的證書需要客戶端驗證通過颖对,才可以繼續(xù)訪問捻撑,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)缤底。這套證書其實就是一對公鑰和私鑰顾患。如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和一個鎖頭个唧,只是全世界只有你一個人有這把鑰匙江解,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來徙歼,然后發(fā)給你犁河,因為只有你一個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西鲁沥。

3. 傳送證書

這個證書其實就是公鑰呼股,只是包含了很多信息,如證書的頒發(fā)機構画恰,過期時間等等彭谁。

4. 客戶端解析證書

這部分工作是由客戶端的TLS來完成的,首先會驗證公鑰是否有效允扇,比如頒發(fā)機構缠局,過期時間等等,如果發(fā)現(xiàn)異常考润,則會彈出一個警告框狭园,提示證書存在問題。如果證書沒有問題糊治,那么就生成一個隨機值唱矛。然后用證書對該隨機值進行加密。就好像上面說的,把隨機值用鎖頭鎖起來绎谦,這樣除非有鑰匙管闷,不然看不到被鎖住的內(nèi)容。

5. 傳送加密信息

這部分傳送的是用證書加密后的隨機值窃肠,目的就是讓服務端得到這個隨機值包个,以后客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了。

6. 服務端解密信息

服務端用私鑰解密后冤留,得到了客戶端傳過來的隨機值(私鑰)碧囊,然后把內(nèi)容通過該值進行對稱加密。所謂對稱加密就是纤怒,將信息和私鑰(隨機值)通過某種算法混合在一起糯而,這樣除非知道私鑰(隨機值),不然無法獲取內(nèi)容肪跋,而正好客戶端和服務端都知道這個私鑰(隨機值)歧蒋,所以只要加密算法夠彪悍,私鑰(隨機值)夠復雜州既,數(shù)據(jù)就夠安全谜洽。

7. 傳輸加密后的信息

這部分信息是服務端用私鑰(隨機值)加密后的信息,可以在客戶端被還原

8. 客戶端解密信息

客戶端用之前生成的私鑰(隨機值)解密服務端傳過來的信息吴叶,于是獲取了解密后的內(nèi)容阐虚。整個過程第三方即使監(jiān)聽到了數(shù)據(jù),也束手無策蚌卤。

二实束、HTTPS的通信流程和握手過程

1、HTTPS對應的通信時序圖:

2逊彭、HTTPS在傳輸數(shù)據(jù)之前需要客戶端(瀏覽器)與服務端(網(wǎng)站)之間進行一次握手咸灿,在握手過程中將確立雙方加密傳輸數(shù)據(jù)的密碼信息。TLS/SSL協(xié)議不僅僅是一套加密傳輸?shù)膮f(xié)議侮叮,更是一件經(jīng)過藝術家精心設計的藝術品避矢,TLS/SSL中使用了非對稱加密,對稱加密以及HASH算法囊榜。握手過程的具體描述如下:

1. 瀏覽器將自己支持的一套加密規(guī)則發(fā)送給網(wǎng)站审胸。

2.網(wǎng)站從中選出一組加密算法與HASH算法,并將自己的身份信息以證書的形式發(fā)回給瀏覽器卸勺。證書里面包含了網(wǎng)站地址砂沛,加密公鑰,以及證書的頒發(fā)機構等信息曙求。

3.瀏覽器獲得網(wǎng)站證書之后瀏覽器要做以下工作:

a) 驗證證書的合法性(頒發(fā)證書的機構是否合法碍庵,證書中包含的網(wǎng)站地址是否與正在訪問的地址一致等)映企,如果證書受信任,則瀏覽器欄里面會顯示一個小鎖頭静浴,否則會給出證書不受信的提示卑吭。

b) 如果證書受信任,或者是用戶接受了不受信的證書马绝,瀏覽器會生成一串隨機數(shù)的密碼,并用證書中提供的公鑰加密挣菲。

c) 使用約定好的HASH算法計算握手消息富稻,并使用生成的隨機數(shù)對消息進行加密,最后將之前生成的所有信息發(fā)送給網(wǎng)站白胀。

4.網(wǎng)站接收瀏覽器發(fā)來的數(shù)據(jù)之后要做以下的操作:

a) 使用自己的私鑰將信息解密取出密碼椭赋,使用密碼解密瀏覽器發(fā)來的握手消息,并驗證HASH是否與瀏覽器發(fā)來的一致或杠。

b) 使用密碼加密一段握手消息哪怔,發(fā)送給瀏覽器。

5.瀏覽器解密并計算握手消息的HASH向抢,如果與服務端發(fā)來的HASH一致认境,此時握手過程結束,之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機密碼并利用對稱加密算法進行加密挟鸠。

轉自:http://blog.csdn.net/kobejayandy/article/details/11545057

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叉信,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子艘希,更是在濱河造成了極大的恐慌硼身,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件覆享,死亡現(xiàn)場離奇詭異佳遂,居然都是意外死亡,警方通過查閱死者的電腦和手機撒顿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門丑罪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人核蘸,你說我怎么就攤上這事巍糯。” “怎么了客扎?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵祟峦,是天一觀的道長。 經(jīng)常有香客問我徙鱼,道長宅楞,這世上最難降的妖魔是什么针姿? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮厌衙,結果婚禮上距淫,老公的妹妹穿的比我還像新娘。我一直安慰自己婶希,他們只是感情好榕暇,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喻杈,像睡著了一般彤枢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上筒饰,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天缴啡,我揣著相機與錄音,去河邊找鬼瓷们。 笑死业栅,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的谬晕。 我是一名探鬼主播碘裕,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼固蚤!你這毒婦竟也來了娘汞?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤夕玩,失蹤者是張志新(化名)和其女友劉穎你弦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燎孟,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡禽作,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了揩页。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旷偿。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖爆侣,靈堂內(nèi)的尸體忽然破棺而出萍程,到底是詐尸還是另有隱情,我是刑警寧澤兔仰,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布茫负,位于F島的核電站,受9級特大地震影響乎赴,放射性物質發(fā)生泄漏忍法。R本人自食惡果不足惜潮尝,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饿序。 院中可真熱鬧勉失,春花似錦、人聲如沸原探。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咽弦。三九已至告匠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間离唬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工划鸽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留输莺,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓裸诽,卻偏偏與公主長得像嫂用,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丈冬,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

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