HTTPS和HTTP
因為HTTP使用明文傳輸叠殷,這就催生了HTTPS码耐。HTTPS與HTTP的區(qū)別在于抄伍,HTTPS會在發(fā)起TCP握手之前進行一次SSL/TSL握手筷频。TSL的目的在于協(xié)商加密方式熏挎,交換密鑰速勇。
TSL過程詳解
- 客戶端 發(fā)起HTTPS請求,報文中告訴服務端 我這邊支持的SSL/TSL的版本 及加密方式坎拐。
- 服務端 從上面的報文中選用一個加密方式及TSL版本烦磁,并與客戶端協(xié)商
- 服務端 返回CA證書,證書內(nèi)包括一把對稱加密的公鑰,服務端自己持有私鑰哼勇、
- 服務端 Service Hello Done
- 客戶端 驗證CA證書合法性都伪,生產(chǎn)一把對稱加密的密碼,使用服務端的公鑰加密自己的密鑰积担。發(fā)送給服務端
- 服務端 拿到客戶端的密鑰陨晶,使用自己的私鑰解密。并用客戶端密鑰進行加密發(fā)送給客戶端驗證帝璧。
- 服務端 Finish
總結(jié)
服務端使用對稱加密先誉,在傳輸過程中只有自己能夠解密。這樣就能安全的拿到客戶端的密鑰的烁。
客戶端使用非對稱加密褐耳,生成一把鑰匙即可。
始終保證自己端發(fā)送加密數(shù)據(jù)使用對面的公鑰渴庆,解密使用自己的私鑰漱病。
TSL可以總結(jié)分為2個步驟。
- 交換密鑰
- 測試連接
TSL握手之后
在TSL握手之后把曼,客戶端和服務端分別得到了什么呢杨帽?
S --> Service , C --> Client
客戶端:S的公鑰,C的臨時密鑰
服務端:C的臨時密鑰嗤军,S的公鑰注盈,S的私鑰
那么在TSL握手之后的請求其實與HTTP無異。只是
客戶端:將報文使用 S的公鑰加密發(fā)送
服務端:將報文使用 C的密鑰加密發(fā)送