看到一篇很好圖解https的文章,原文鏈接:http://www.cnblogs.com/zhuqil/archive/2012/07/23/2604572.html
記錄如下
我們都知道HTTPS能夠加密信息,以免敏感信息被第三方獲取。所以很多銀行網(wǎng)站或電子郵箱等等安全級(jí)別較高的服務(wù)都會(huì)采用HTTPS協(xié)議灶泵。
HTTPS簡(jiǎn)介
HTTPS其實(shí)是有兩部分組成:HTTP +SSL/ TLS,也就是在HTTP上又加了一層處理加密信息的模塊刨秆。服務(wù)端和客戶(hù)端的信息傳輸都會(huì)通過(guò)TLS進(jìn)行加密囱井,所以傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)。具體是如何進(jìn)行加密六剥,解密晚顷,驗(yàn)證的,且看下圖疗疟。
1. 客戶(hù)端發(fā)起HTTPS請(qǐng)求
這個(gè)沒(méi)什么好說(shuō)的该默,就是用戶(hù)在瀏覽器里輸入一個(gè)https網(wǎng)址,然后連接到server的443端口策彤。
2. 服務(wù)端的配置
采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書(shū)栓袖,可以自己制作,也可以向組織申請(qǐng)店诗。區(qū)別就是自己頒發(fā)的證書(shū)需要客戶(hù)端驗(yàn)證通過(guò)裹刮,才可以繼續(xù)訪問(wèn),而使用受信任的公司申請(qǐng)的證書(shū)則不會(huì)彈出提示頁(yè)面(startssl就是個(gè)不錯(cuò)的選擇庞瘸,有1年的免費(fèi)服務(wù))捧弃。這套證書(shū)其實(shí)就是一對(duì)公鑰和私鑰。如果對(duì)公鑰和私鑰不太理解恕洲,可以想象成一把鑰匙和一個(gè)鎖頭塔橡,只是全世界只有你一個(gè)人有這把鑰匙梅割,你可以把鎖頭給別人霜第,別人可以用這個(gè)鎖把重要的東西鎖起來(lái),然后發(fā)給你户辞,因?yàn)橹挥心阋粋€(gè)人有這把鑰匙泌类,所以只有你才能看到被這把鎖鎖起來(lái)的東西。
3. 傳送證書(shū)
這個(gè)證書(shū)其實(shí)就是公鑰,只是包含了很多信息刃榨,如證書(shū)的頒發(fā)機(jī)構(gòu)弹砚,過(guò)期時(shí)間等等。
4. 客戶(hù)端解析證書(shū)
這部分工作是有客戶(hù)端的TLS來(lái)完成的枢希,首先會(huì)驗(yàn)證公鑰是否有效桌吃,比如頒發(fā)機(jī)構(gòu),過(guò)期時(shí)間等等苞轿,如果發(fā)現(xiàn)異常茅诱,則會(huì)彈出一個(gè)警告框,提示證書(shū)存在問(wèn)題搬卒。如果證書(shū)沒(méi)有問(wèn)題瑟俭,那么就生成一個(gè)隨即值。然后用證書(shū)對(duì)該隨機(jī)值進(jìn)行加密契邀。就好像上面說(shuō)的摆寄,把隨機(jī)值用鎖頭鎖起來(lái),這樣除非有鑰匙坯门,不然看不到被鎖住的內(nèi)容微饥。
5. 傳送加密信息
這部分傳送的是用證書(shū)加密后的隨機(jī)值,目的就是讓服務(wù)端得到這個(gè)隨機(jī)值田盈,以后客戶(hù)端和服務(wù)端的通信就可以通過(guò)這個(gè)隨機(jī)值來(lái)進(jìn)行加密解密了畜号。
6. 服務(wù)段解密信息
服務(wù)端用私鑰解密后,得到了客戶(hù)端傳過(guò)來(lái)的隨機(jī)值(私鑰)允瞧,然后把內(nèi)容通過(guò)該值進(jìn)行對(duì)稱(chēng)加密简软。所謂對(duì)稱(chēng)加密就是,將信息和私鑰通過(guò)某種算法混合在一起述暂,這樣除非知道私鑰痹升,不然無(wú)法獲取內(nèi)容,而正好客戶(hù)端和服務(wù)端都知道這個(gè)私鑰畦韭,所以只要加密算法夠彪悍疼蛾,私鑰夠復(fù)雜,數(shù)據(jù)就夠安全艺配。
7. 傳輸加密后的信息
這部分信息是服務(wù)段用私鑰加密后的信息察郁,可以在客戶(hù)端被還原
8. 客戶(hù)端解密信息
客戶(hù)端用之前生成的私鑰解密服務(wù)段傳過(guò)來(lái)的信息,于是獲取了解密后的內(nèi)容转唉。整個(gè)過(guò)程第三方即使監(jiān)聽(tīng)到了數(shù)據(jù)皮钠,也束手無(wú)策。