HTTPS從原理到應用(三):SSL/TLS協(xié)議

有了前面加密和哈希以及數(shù)字證書和數(shù)字簽名兩篇文章的鋪墊姻蚓,終于可以來認識HTTPS的核心所在了磷醋,SSL/TLS協(xié)議冕臭。本篇從SSL/TLS發(fā)展歷史到握手以及傳輸?shù)脑敿氝^程來講解余蟹。
此篇文章的邏輯圖

圖0-0 此篇文章的邏輯圖

SSL/TLS協(xié)議概覽

SSL/TLS協(xié)議是什么

計算機網(wǎng)絡的OSI七層模型和TCP/IP四層模型想必大家都知道。其中SSL/TLS是一種介與于傳輸層(比如TCP/IP)和應用層(比如HTTP)的協(xié)議子刮。它通過"握手協(xié)議(Handshake Protocol)"和"傳輸協(xié)議(Record Protocol)"來解決傳輸安全的問題威酒。SSL/TLS是一個可選層,沒有它挺峡,使用HTTP也可以通信葵孤,它存在的目的就是為了解決安全問題,這也就是HTTPS相對于HTTP的精髓所在橱赠。

SSL/TLS協(xié)議發(fā)展歷史

SSL/TLS協(xié)議發(fā)展歷史參看下表尤仍,更詳細的發(fā)展歷史參看維基百科的SSL/TLS協(xié)議發(fā)展歷史

Protocol Year RFC Description
SSL 1.0 1994 NetScape公司設計1.0版 但是未發(fā)布
SSL 2.0 1995.02 NetScape公司發(fā)布SSL 2.0版
SSL 3.0 1996 RFC 6101 NetScape公司發(fā)布SSL 3.0版
TLS 1.0 1999 RFC 2246 IETF將SSL標準化 改名為TLS 發(fā)布1.0版
TLS 1.1 2006.04 RFC 4346 發(fā)布TLS1.1版
TLS 1.2 2008.08 RFC 5246 發(fā)布TLS1.2版
TLS 1.3 TLS 1.3還是一個互聯(lián)網(wǎng)草案 待發(fā)布

目前狭姨,應用最廣泛的是TLS 1.0宰啦,接下來是SSL 3.0。但是饼拍,主流瀏覽器都已經(jīng)實現(xiàn)了TLS 1.2的支持赡模。值得一提的是iOS9App,需將HTTP連接升級到HTTPS师抄,并且TLS版本不得低于1.2(當然升級為HTTPS并非必須的)漓柑。

SSL/TLS運行過程

SSL/TLS運行過程概述

上面提到SSL/TLS有兩個階段握手協(xié)議傳輸協(xié)議握手協(xié)議就是建立起連接的過程,這個階段采用非對稱加密辆布,這個過程完畢后會生成一個對話秘鑰瞬矩,從而傳輸協(xié)議過程,就是用這個對話秘鑰使用對稱加密進行傳輸锋玲。之所以這樣做景用,是因為,非對稱加密是很耗性能的嫩絮。而握手協(xié)議過程中丛肢,使用數(shù)字證書保證了公鑰的安全性。當然這個過程既可以雙向證書驗證剿干,也可以只驗證服務端的證書單向證書驗證蜂怎。這也是前兩節(jié)所作的鋪墊,不至于這兒看的太迷糊置尔。

SSL/TLS運行過程詳解

圖2-0 SSL/TLS運行過程詳解

結合上圖(圖2-0)杠步,我來說明上圖中一步步的都發(fā)生了什么?

客戶端發(fā)出請求(Client Hello)

對應上圖第一步榜轿,客戶端發(fā)出請求幽歼,這一步客戶端主要向服務端提供以下信息:

  • 支持的SSL/TLS協(xié)議版本
  • 支持的加密套件列表(cipher suite)
  • 支持的壓縮算法列表(compression methods),用于后續(xù)的壓縮傳輸
  • 產(chǎn)生的一個隨機數(shù)random_C(random number)谬盐,客戶端有存留甸私,稍后用于生成"對話密鑰(session key)"
服務端回應(Server Hello)

收到客服端的請求之后,服務端向客戶端回應以下信息:

  • 根據(jù)客戶端支持的SSL/TLS協(xié)議版本飞傀,和自己的比較確定使用的SSL/TLS協(xié)議版本皇型,如果沒有合適的,對話關閉
  • 回應加密套件砸烦,壓縮算法
  • 產(chǎn)生的一個隨機數(shù)random_S(random number)弃鸦,服務端有存留,稍后用于生成"對話密鑰(session key)"
  • 服務端數(shù)字證書(證明自己的身份幢痘,傳遞公鑰)
  • 如果需要驗證客戶端唬格,發(fā)出請求,要求客戶端提供證書
客戶端回應

客戶端收到服務端的回應后颜说,首先驗證服務端的數(shù)字證書购岗,如果證書沒有問題繼續(xù)下去,如果證書有問題门粪,則會有相應提示藕畔,或者對話直接關閉。然后客戶端在向服務端發(fā)送以下信息:

  • 如果服務端有請求證書庄拇,發(fā)送自己的數(shù)字證書
  • 在產(chǎn)生一個隨機數(shù)pre-master key(random number)注服,并且用服務端數(shù)字證書中的公鑰加密
  • 編碼改變通知韭邓,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送
服務端最后的回應

如果有客戶端的證書,就先驗證客戶端的證書

  • 使用自己的私鑰溶弟,對隨機數(shù)pre-master key解密女淑,這時客戶端和服務端各自有了三個隨機數(shù),然后用原來協(xié)商的加密方式生成本次通話使用的會話密鑰(session key)
  • 編碼改變通知辜御,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送

這時客戶端和服務端都有了session key鸭你,然后握手協(xié)議階段就結束了。下面開始使用session key對稱加密數(shù)據(jù)擒权,進行傳輸袱巨,就進入了下一個階段,傳輸協(xié)議過程碳抄。

總結

這塊的重點在與SSL/TSL協(xié)議的握手協(xié)議過程愉老。在第三步,客戶端驗證證書的時候剖效,如果服務端的證書在系統(tǒng)默認信任證書列表中(系統(tǒng)會默認信任一些CA認證中心的根證書)則會直接通過嫉入,如果沒有在系統(tǒng)默認信任證書列表中,瀏覽器可能會彈窗讓用戶選擇是否信任該證書璧尸,也有可能會直接關閉連接咒林,提示用戶,證書不可信爷光。而在App內(nèi)垫竞,如果想要信任未在系統(tǒng)信任列表中的證書,則需要在App內(nèi)提前置入服務端證書蛀序,關于這一點有講欢瞪。而關于認證方式,大多數(shù)也都是采用的單向認證哼拔,也就是說僅僅認證服務端的證書引有,而像銀行等機構則多使用雙向認證的方式瓣颅。

參考

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末倦逐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子宫补,更是在濱河造成了極大的恐慌檬姥,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粉怕,死亡現(xiàn)場離奇詭異健民,居然都是意外死亡,警方通過查閱死者的電腦和手機贫贝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門秉犹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛉谜,“玉大人,你說我怎么就攤上這事崇堵⌒统希” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵鸳劳,是天一觀的道長狰贯。 經(jīng)常有香客問我,道長赏廓,這世上最難降的妖魔是什么涵紊? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮幔摸,結果婚禮上摸柄,老公的妹妹穿的比我還像新娘。我一直安慰自己抚太,他們只是感情好塘幅,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尿贫,像睡著了一般电媳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庆亡,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天匾乓,我揣著相機與錄音,去河邊找鬼又谋。 笑死拼缝,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的彰亥。 我是一名探鬼主播咧七,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼任斋!你這毒婦竟也來了继阻?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤废酷,失蹤者是張志新(化名)和其女友劉穎瘟檩,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澈蟆,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡墨辛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了趴俘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睹簇。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡奏赘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出太惠,到底是詐尸還是另有隱情志珍,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布垛叨,位于F島的核電站伦糯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嗽元。R本人自食惡果不足惜敛纲,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剂癌。 院中可真熱鬧淤翔,春花似錦、人聲如沸佩谷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谐檀。三九已至抡谐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桐猬,已是汗流浹背麦撵。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溃肪,地道東北人免胃。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像惫撰,于是被迫代替她去往敵國和親羔沙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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