首先推薦一本書(shū),《HTTP權(quán)威指南》我就是看這本書(shū)入門(mén)的,對(duì)http協(xié)議有了更好的理解,學(xué)習(xí)https的理論知識(shí)我認(rèn)為需要了解以下幾點(diǎn),需要一步步的深入學(xué)習(xí):
1、HTTPS的基本概念?
2、HTTPS和HTTP的差別?HTTP + 數(shù)據(jù)加密技術(shù) =HTTPS ?HTTPS 所謂的安全是指哪里安全?
3、HTTPS 的詳細(xì)交互過(guò)程?
4、基礎(chǔ)的密碼學(xué)知識(shí)學(xué)習(xí):數(shù)字加密,對(duì)稱(chēng)密鑰,非對(duì)稱(chēng)密鑰,數(shù)字簽名,數(shù)字證書(shū)的基本概念。
5、使用openssl怎么制造自簽證書(shū)?
6、實(shí)現(xiàn)簡(jiǎn)單的https的客戶(hù)端和服務(wù)器端(Python版本)
7、利用wireshake抓包進(jìn)一步分析HTTPS協(xié)議
8、實(shí)際項(xiàng)目開(kāi)發(fā)過(guò)程中遇到的問(wèn)題總結(jié)
其中1-3個(gè)點(diǎn),放在本筆記中,4放在同系列學(xué)習(xí)筆記二下;5放在同系列學(xué)習(xí)筆記三下;6放在同系列學(xué)習(xí)筆記四下;7放在同系列學(xué)習(xí)筆記五下
一、HTTPS的基本概念
HTTPS 是最流行的HTTP 安全形式。它是由網(wǎng)景公司首創(chuàng)的,所有主要的瀏覽器和服務(wù)器都支持此協(xié)議。HTTPS 的URL 以https://,而不是http:// 開(kāi)頭,據(jù)此就可以分辨某個(gè)Web 頁(yè)面是通過(guò)HTTPS 而不是HTTP 訪(fǎng)問(wèn)的。
HTTPS = HTTP + SSL(TLS),HTTPS 就是在安全的傳輸層上發(fā)送的HTTP。如下圖所示:HTTPS 沒(méi)有將未加密的HTTP 報(bào)文發(fā)送給TCP,它在將HTTP 報(bào)文發(fā)送給TCP 之前,先將其發(fā)送給了一個(gè)安全層,對(duì)其進(jìn)行加密?,F(xiàn)在,HTTP 安全層是通過(guò)SSL 及其現(xiàn)代替代協(xié)議TLS 來(lái)實(shí)現(xiàn)的。我們遵循常見(jiàn)的用法,用術(shù)語(yǔ)SSL 來(lái)表示SSL 或者TLS。
二、HTTPS與HTTP的區(qū)別
HTTP + 業(yè)務(wù)數(shù)據(jù)加密技術(shù) ≠ HTTPS ;因?yàn)?nbsp;HTTPS = HTTP + SSL(TLS),SSL ≠ 業(yè)務(wù)數(shù)據(jù)加密技術(shù);SSL是安全層,建立SSL隧道需要做隧道認(rèn)證,至少要完成單向認(rèn)證(服務(wù)器認(rèn)證)或者雙向認(rèn)證,之后數(shù)據(jù)在傳輸?shù)倪^(guò)程中都進(jìn)行了加密處理;通常HTTP使用的在業(yè)務(wù)層做的數(shù)據(jù)字段的加密,是業(yè)務(wù)數(shù)據(jù)的加密,傳輸?shù)倪^(guò)程中是沒(méi)有加密的;而HTTPS的加密是指?jìng)鬏攲拥募用堋TTPS跟HTTP相比,有以下幾個(gè)明顯的優(yōu)點(diǎn):
• 服務(wù)器認(rèn)證(客戶(hù)端知道它們是在與真正的而不是偽造的服務(wù)器通話(huà));
• 客戶(hù)端認(rèn)證(服務(wù)器知道它們是在與真正的而不是偽造的客戶(hù)端通話(huà)),通?,F(xiàn)在web服務(wù),不需要做客戶(hù)端認(rèn)證,只需要做服務(wù)器認(rèn)證;
• 完整性(客戶(hù)端和服務(wù)器的數(shù)據(jù)不會(huì)被修改),因?yàn)檎麄€(gè)傳輸過(guò)程是加密的;
• 加密(客戶(hù)端和服務(wù)器的對(duì)話(huà)是私密的,無(wú)需擔(dān)心被竊聽(tīng)),使用wireshake監(jiān)聽(tīng)HTTPS端口會(huì)捕獲不到數(shù)據(jù)。
• 效率(一個(gè)運(yùn)行的足夠快的算法,以便低端的客戶(hù)端和服務(wù)器使用),如果使用HTTP+特別復(fù)雜的數(shù)據(jù)加密技術(shù)來(lái)試圖替代HTTPS,交互的雙方在加解密的過(guò)程會(huì)消耗大量的性能,性能下降特別明顯。
• 普適性(基本上所有的客戶(hù)端和服務(wù)器都支持這些協(xié)議)。
• 管理的可擴(kuò)展性(在任何地方的任何人都可以立即進(jìn)行安全通信)。
• 適應(yīng)性(能夠支持當(dāng)前最知名的安全方法)。
• 在社會(huì)上的可行性(滿(mǎn)足社會(huì)的政治文化需要)。
三 、HTTPS的交互過(guò)程
1、歷程一:利用非對(duì)稱(chēng)加密傳輸數(shù)據(jù), HTTP + 非對(duì)稱(chēng)加密技術(shù)
采用HTTP協(xié)議,利用非對(duì)稱(chēng)加密RSA技術(shù)對(duì)數(shù)據(jù)進(jìn)行加密(RSA 算法自身,甚至RSA 實(shí)現(xiàn)的源代碼,破解代碼找到相應(yīng)的私有密鑰的難度仍相當(dāng)于對(duì)一個(gè)極大的數(shù)進(jìn)行質(zhì)因數(shù)分解的困難程度,這種計(jì)算被認(rèn)為是所有計(jì)算機(jī)科學(xué)中最難的問(wèn)題之一)
只要服務(wù)器端保存好私鑰,這樣看來(lái)數(shù)據(jù)的傳輸鐵定是沒(méi)問(wèn)題的,但是這還有一個(gè)很大的風(fēng)險(xiǎn),如果黑客假冒自己是服務(wù)器端,把客戶(hù)端的公鑰替換成跟黑客服務(wù)器匹配的一對(duì)公鑰,客戶(hù)端會(huì)在不知情的情況下,與黑客服務(wù)器進(jìn)行交互。
2、歷程二:簽名證書(shū) + SSL 加密,驗(yàn)證服務(wù)器身份,加密傳輸通道,所有的通信數(shù)據(jù)在應(yīng)用層下加密傳輸,保證傳輸層安全。HTTPS
交互過(guò)程如上圖所示,詳細(xì)的描述了在簡(jiǎn)歷TCP請(qǐng)求后,SSL握手的過(guò)程,整個(gè)HTTPS的交互過(guò)程大致如下:
第一步:1-3 服務(wù)器端生成一個(gè)證書(shū)請(qǐng)求,服務(wù)器向權(quán)威的CA機(jī)構(gòu)申請(qǐng)證書(shū),一般是把公鑰給CA進(jìn)行加密生成帶CA簽名的證書(shū)。
第二步:4 如果CA是權(quán)威的機(jī)構(gòu),一般情況下瀏覽器會(huì)報(bào)錯(cuò)CA的根證書(shū),如果是自簽,則需要客戶(hù)端主動(dòng)加載或者選擇信任服務(wù)器發(fā)來(lái)的證書(shū)。
第三步:5 建立底層socket服務(wù),完成TCP的三次握手。
第四步:6 建立傳輸層的SSL握手,具體又可描述為:
A : 6.0-6.1 客戶(hù)端發(fā)起clent hello 請(qǐng)求:將自己支持的一套加密規(guī)則、以及一個(gè)隨機(jī)數(shù)(Random_C)發(fā)送給服務(wù)器。
B : 6.2-6.3 服務(wù)器響應(yīng)server hello :服務(wù)器根據(jù)自己支持的加密規(guī)則,從客戶(hù)端發(fā)來(lái)的請(qǐng)求中選出一組加密算法與HASH算法,生成隨機(jī)數(shù)(Random_S),并將自己的身份信息以證書(shū)(CA)的形式發(fā)回給瀏覽器。
C: 6.4-6.5 客戶(hù)端接到服務(wù)器的初步響應(yīng)后做四件事情,然后把數(shù)據(jù)發(fā)送給服務(wù)器端:
(1)證書(shū)校驗(yàn): 驗(yàn)證證書(shū)的合法性(頒發(fā)證書(shū)的機(jī)構(gòu)是否合法,證書(shū)中包含的網(wǎng)站地址是否與正在訪(fǎng)問(wèn)的地址一致等)。
(2)生成密碼:瀏覽器會(huì)生成一串隨機(jī)數(shù)的密碼(Pre_master),并用CA證書(shū)里的公鑰加密(enc_pre_master),用于傳給服務(wù)器。
(3)計(jì)算協(xié)商密鑰:
此時(shí)客戶(hù)端已經(jīng)獲取全部的計(jì)算協(xié)商密鑰需要的信息:兩個(gè)明文隨機(jī)數(shù) Random_C 和 Random_S 與自己計(jì)算產(chǎn)生的 Pre-master,計(jì)算得到協(xié)商密鑰enc_key。enc_key=Fuc(random_C, random_S, Pre-Master)
(4)生成握手信息:使用約定好的HASH計(jì)算握手消息,并使用協(xié)商密鑰enc_key及約定好的算法對(duì)消息進(jìn)行加密。
D: 6.6-6.7 服務(wù)器端接收到客戶(hù)端發(fā)來(lái)的SSL握手信息后,做以下3件事:
(1)私鑰解密:使用自己的私鑰從接收到的enc_pre_master中解密取出密碼Pre_master。
(2)計(jì)算協(xié)商密鑰:此時(shí)服務(wù)器已經(jīng)獲取全部的計(jì)算協(xié)商密鑰需要的信息:兩個(gè)明文隨機(jī)數(shù) Random_C 和 Random_S 與Pre-master,計(jì)算得到協(xié)商密鑰enc_key。enc_key=Fuc(random_C, random_S, Pre-Master)
(3)解密握手消息:使用協(xié)商密鑰enc_key解密客戶(hù)端發(fā)來(lái)的握手消息,并驗(yàn)證HASH是否與客戶(hù)端發(fā)來(lái)的一致。
(4)生成握手消息使用協(xié)商密鑰enc_key及約定好的算法加密一段握手消息,發(fā)送給客戶(hù)端。
第五步: 7 正常加密通信
握手成功之后,所有的通信數(shù)據(jù)在應(yīng)用層下都將由之前協(xié)商密鑰enc_key及約定好的算法進(jìn)行加密解密。
相關(guān)推薦
- 華納云618大促,166元買(mǎi)8H16G5M香港cn2云服務(wù)器,大帶寬服務(wù)器688起
- RAKsmart防護(hù)配置實(shí)戰(zhàn):10Gbps套餐部署指南
- 什么是遞歸解析服務(wù)器?與其他DNS服務(wù)器有啥區(qū)別
- 什么是遞歸解析服務(wù)器?與其他DNS服務(wù)器有啥區(qū)別
- 如何利用RAKsmart服務(wù)器實(shí)現(xiàn)高效多站點(diǎn)部署方案
- 華納云香港高防服務(wù)器150G防御4.6折促銷(xiāo),低至6888元/月,CN2大帶寬直連清洗,終身循環(huán)折扣
- RakSmart服務(wù)器成本優(yōu)化策略
- 自媒體推廣實(shí)時(shí)監(jiān)控從服務(wù)器帶寬到用戶(hù)行為解決方法