HTTPS 原理解析

一姐刁、前言

在說(shuō)HTTPS之前先說(shuō)說(shuō)什么是HTTP铃诬,HTTP就是我們平時(shí)瀏覽網(wǎng)頁(yè)時(shí)候使用的一種協(xié)議。HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的座哩,也就是明文的徒扶,因此使用HTTP協(xié)議傳輸隱私信息非常不安全。為了保證這些隱私數(shù)據(jù)能加密傳輸根穷,于是網(wǎng)景公司設(shè)計(jì)了SSL(Secure Sockets Layer)協(xié)議用于對(duì)HTTP協(xié)議傳輸?shù)臄?shù)據(jù)進(jìn)行加密姜骡,從而就誕生了HTTPS。SSL目前的版本是3.0屿良,被IETF(Internet Engineering Task Force)定義在RFC 6101中圈澈,之后IETF對(duì)SSL 3.0進(jìn)行了升級(jí),于是出現(xiàn)了TLS(Transport Layer Security) 1.0尘惧,定義在RFC 2246康栈。實(shí)際上我們現(xiàn)在的HTTPS都是用的TLS協(xié)議,但是由于SSL出現(xiàn)的時(shí)間比較早喷橙,并且依舊被現(xiàn)在瀏覽器所支持啥么,因此SSL依然是HTTPS的代名詞,但無(wú)論是TLS還是SSL都是上個(gè)世紀(jì)的事情贰逾,SSL最后一個(gè)版本是3.0饥臂,今后TLS將會(huì)繼承SSL優(yōu)良血統(tǒng)繼續(xù)為我們進(jìn)行加密服務(wù)。目前TLS的版本是1.2似踱,定義在RFC 5246中隅熙,暫時(shí)還沒(méi)有被廣泛的使用 ()

概念可參考百科

http://baike.baidu.com/link?url=M8pBu1j_22f0PW6izvAOCTjhepyRcT320U9LDmjyzb586OYS_aBALxfqIGVca1V-8MJeSl3bTUEOThMuwpamPK

二? HTTPS 驗(yàn)證原理

Https在真正請(qǐng)求數(shù)據(jù)前稽煤,先會(huì)與服務(wù)有幾次握手驗(yàn)證,以證明相互的身份囚戚,以下圖為例


2.1? 驗(yàn)證流程

注:文中所寫的序號(hào)與圖不對(duì)應(yīng)但流程是對(duì)應(yīng)的

1 客戶端發(fā)起一個(gè)https的請(qǐng)求酵熙,把自身支持的一系列Cipher Suite(密鑰算法套件,簡(jiǎn)稱Cipher)發(fā)送給服務(wù)端

2? 服務(wù)端驰坊,接收到客戶端所有的Cipher后與自身支持的對(duì)比匾二,如果不支持則連接斷開(kāi),反之則會(huì)從中選出一種加密算法和HASH算法

以證書的形式返回給客戶端 證書中還包含了 公鑰 頒證機(jī)構(gòu) 網(wǎng)址 失效日期等等拳芙。

3 客戶端收到服務(wù)端響應(yīng)后會(huì)做以下幾件事

3.1 驗(yàn)證證書的合法性

頒發(fā)證書的機(jī)構(gòu)是否合法與是否過(guò)期察藐,證書中包含的網(wǎng)站地址是否與正在訪問(wèn)的地址一致等

證書驗(yàn)證通過(guò)后,在瀏覽器的地址欄會(huì)加上一把小鎖(每家瀏覽器驗(yàn)證通過(guò)后的提示不一樣 不做討論)

3.2 生成隨機(jī)密碼

如果證書驗(yàn)證通過(guò)舟扎,或者用戶接受了不授信的證書分飞,此時(shí)瀏覽器會(huì)生成一串隨機(jī)數(shù),然后用證書中的公鑰加密睹限。

3.3 HASH握手信息

用最開(kāi)始約定好的HASH方式譬猫,把握手消息取HASH值,? 然后用 隨機(jī)數(shù)加密 “握手消息+握手消息HASH值(簽名)”? 并一起發(fā)送給服務(wù)端

在這里之所以要取握手消息的HASH值羡疗,主要是把握手消息做一個(gè)簽名染服,用于驗(yàn)證握手消息在傳輸過(guò)程中沒(méi)有被篡改過(guò)。

4? 服務(wù)端拿到客戶端傳來(lái)的密文叨恨,用自己的私鑰來(lái)解密握手消息取出隨機(jī)數(shù)密碼柳刮,再用隨機(jī)數(shù)密碼 解密 握手消息與HASH值,并與傳過(guò)來(lái)的HASH值做對(duì)比確認(rèn)是否一致痒钝。

然后用隨機(jī)密碼加密一段握手消息(握手消息+握手消息的HASH值 )給客戶端

5? 客戶端用隨機(jī)數(shù)解密并計(jì)算握手消息的HASH秉颗,如果與服務(wù)端發(fā)來(lái)的HASH一致,此時(shí)握手過(guò)程結(jié)束午乓,之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機(jī)密碼并利用對(duì)稱加密算法進(jìn)行加密

因?yàn)檫@串密鑰只有客戶端和服務(wù)端知道,所以即使中間請(qǐng)求被攔截也是沒(méi)法解密數(shù)據(jù)的闸准,以此保證了通信的安全

非對(duì)稱加密算法:RSA益愈,DSA/DSS? ? 在客戶端與服務(wù)端相互驗(yàn)證的過(guò)程中用的是對(duì)稱加密

對(duì)稱加密算法:AES,RC4夷家,3DES? ? 客戶端與服務(wù)端相互驗(yàn)證通過(guò)后蒸其,以隨機(jī)數(shù)作為密鑰時(shí),就是對(duì)稱加密

HASH算法:MD5库快,SHA1摸袁,SHA256? 在確認(rèn)握手消息沒(méi)有被篡改時(shí)

2.2? 客戶端如何驗(yàn)證 證書的合法性?

1. 驗(yàn)證證書是否在有效期內(nèi)义屏。

在服務(wù)端面返回的證書中會(huì)包含證書的有效期靠汁,可以通過(guò)失效日期來(lái)驗(yàn)證 證書是否過(guò)期

2. 驗(yàn)證證書是否被吊銷了蜂大。

被吊銷后的證書是無(wú)效的。驗(yàn)證吊銷有CRL(證書吊銷列表)和OCSP(在線證書檢查)兩種方法蝶怔。

證書被吊銷后會(huì)被記錄在CRL中奶浦,CA會(huì)定期發(fā)布CRL。應(yīng)用程序可以依靠CRL來(lái)檢查證書是否被吊銷了踢星。

CRL有兩個(gè)缺點(diǎn)澳叉,一是有可能會(huì)很大,下載很麻煩沐悦。針對(duì)這種情況有增量CRL這種方案成洗。二是有滯后性,就算證書被吊銷了藏否,應(yīng)用也只能等到發(fā)布最新的CRL后才能知道瓶殃。

增量CRL也能解決一部分問(wèn)題,但沒(méi)有徹底解決秕岛。OCSP是在線證書狀態(tài)檢查協(xié)議碌燕。應(yīng)用按照標(biāo)準(zhǔn)發(fā)送一個(gè)請(qǐng)求,對(duì)某張證書進(jìn)行查詢继薛,之后服務(wù)器返回證書狀態(tài)修壕。

OCSP可以認(rèn)為是即時(shí)的(實(shí)際實(shí)現(xiàn)中可能會(huì)有一定延遲),所以沒(méi)有CRL的缺點(diǎn)遏考。

3. 驗(yàn)證證書是否是上級(jí)CA簽發(fā)的慈鸠。

windows中保留了所有受信任的根證書,瀏覽器可以查看信任的根證書灌具,自然可以驗(yàn)證web服務(wù)器的證書青团,

是不是由這些受信任根證書頒發(fā)的或者受信任根證書的二級(jí)證書機(jī)構(gòu)頒發(fā)的(根證書機(jī)構(gòu)可能會(huì)受權(quán)給底下的中級(jí)證書機(jī)構(gòu),然后由中級(jí)證書機(jī)構(gòu)頒發(fā)中級(jí)證書)

在驗(yàn)證證書的時(shí)候咖楣,瀏覽器會(huì)調(diào)用系統(tǒng)的證書管理器接口對(duì)證書路徑中的所有證書一級(jí)一級(jí)的進(jìn)行驗(yàn)證督笆,只有路徑中所有的證書都是受信的,整個(gè)驗(yàn)證的結(jié)果才是受信

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诱贿,一起剝皮案震驚了整個(gè)濱河市娃肿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌珠十,老刑警劉巖料扰,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異焙蹭,居然都是意外死亡晒杈,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門孔厉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拯钻,“玉大人帖努,你說(shuō)我怎么就攤上這事∷低ィ” “怎么了然磷?”我有些...
    開(kāi)封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)刊驴。 經(jīng)常有香客問(wèn)我姿搜,道長(zhǎng),這世上最難降的妖魔是什么捆憎? 我笑而不...
    開(kāi)封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任舅柜,我火速辦了婚禮,結(jié)果婚禮上躲惰,老公的妹妹穿的比我還像新娘致份。我一直安慰自己,他們只是感情好础拨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布氮块。 她就那樣靜靜地躺著,像睡著了一般诡宗。 火紅的嫁衣襯著肌膚如雪滔蝉。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天塔沃,我揣著相機(jī)與錄音蝠引,去河邊找鬼。 笑死蛀柴,一個(gè)胖子當(dāng)著我的面吹牛螃概,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鸽疾,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吊洼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了制肮?” 一聲冷哼從身側(cè)響起冒窍,我...
    開(kāi)封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弄企,沒(méi)想到半個(gè)月后超燃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體区拳,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拘领,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了樱调。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片约素。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡届良,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出圣猎,到底是詐尸還是另有隱情士葫,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布送悔,位于F島的核電站慢显,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏欠啤。R本人自食惡果不足惜荚藻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望洁段。 院中可真熱鬧应狱,春花似錦、人聲如沸祠丝。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)写半。三九已至岸蜗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間污朽,已是汗流浹背散吵。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蟆肆,地道東北人矾睦。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像炎功,于是被迫代替她去往敵國(guó)和親枚冗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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