HTTP vs HTTPS
HTTP缺點(diǎn) | 解決方案 | 問題范疇 |
---|---|---|
通信使用明文(不加密)训裆,內(nèi)容可能被竊聽 | 采用SSL/TLS加密通信 | 加密 |
不驗(yàn)證通信方的身份剥汤,因此有可能遭遇偽裝 | 使用值得信任的第三方機(jī)構(gòu)辦法的證書來確定通信方 | 證書 |
無法驗(yàn)證報文的完整性废岂,有可能已遭篡改 | MAC(Message Authentication Code)報文摘要 | 完整性保護(hù) |
HTTPS概念
- 從解決Http的缺點(diǎn)的角度來看:
HTTP+加密+認(rèn)證+完整性保護(hù)=HTTPS(HTTP Secure)
HTTP加上加密處理和認(rèn)證以及完整性保護(hù)后即是HTTPS
- 從通信協(xié)議的角度來看:
HTTPS并非是應(yīng)用層的一種新協(xié)議澈驼。只是HTTP通信接口部分使用SSL(Secure Socket Layer)/TLS(Transport Layer Security)協(xié)議替代而已。所以贯要,HTTPS是身披SSL外殼的HTTP揽浙。
HTTPS建立連接的過程
- 對稱加密和非對稱加密
非對稱加密遵岩,客戶端公鑰加密,服務(wù)端私鑰解密眷细。
相對于對稱加密拦盹,非對稱加密的處理速度要慢一些。
- 在客戶端和服務(wù)端交換密鑰環(huán)節(jié)溪椎,使用非對稱加密方式普舆。
- 在建立通信之后的交換報文階段恬口,則使用對稱加密方式。
- 證明密鑰正確性:
- 由CA數(shù)字證書認(rèn)證機(jī)構(gòu)背書
- 客戶端在接收到數(shù)字證書之后沼侣,可以使用CA的公鑰祖能,對數(shù)字證書的數(shù)字簽名進(jìn)行校驗(yàn),一旦驗(yàn)證通過蛾洛,客戶端變可以明確兩件事情:一养铸、認(rèn)證服務(wù)器的公開密鑰是真實(shí)有效的數(shù)字證書認(rèn)證機(jī)構(gòu),二轧膘、服務(wù)器的公開密鑰是值得信賴的钞螟。
HTTPS建立連接的流程:
第一階段(握手協(xié)商)
- 客戶端通過發(fā)送Client Hello報文開始SSL通信。報文中包含客戶端支持的SSL的制定版本谎碍、加密組件列表(所使用的算法及密鑰長度)
- 服務(wù)端一Server Hello報文作為應(yīng)答鳞滨。和客戶端一樣,在報文中包含SSL版本以及加密組件蟆淀。服務(wù)器的加密組件內(nèi)容是從接收到的客戶端加密組件內(nèi)篩選出來的
- 服務(wù)器發(fā)送Certificate報文拯啦。報文中包含公鑰證書,當(dāng)然這個公鑰證書是使用CA機(jī)構(gòu)的私鑰加密過的熔任,同時證書上有數(shù)字簽名提岔,以便客戶端校驗(yàn)。
- 服務(wù)器發(fā)送Server Hello Done報文通知客戶端笋敞,最初階段的SSL握手協(xié)商部分結(jié)束碱蒙。
第二階段
- SSL第一次握手結(jié)束之后,客戶端以Client Key Exchange報文作為回應(yīng)夯巷。報文中包含在后續(xù)通信加密中使用的“Pre-master secret”的隨機(jī)密碼串赛惩。該報文使用服務(wù)器的公鑰進(jìn)行加密。
- 緊接著客戶端發(fā)送Change Cipher Spec報文趁餐。該報文會提示服務(wù)器喷兼,在此之后的通信會采用Pre-master secret密鑰加密
- 客戶端發(fā)送Finished報文,該報文包含連接至今全部報文的整體報文校驗(yàn)值
- 服務(wù)器同樣發(fā)送Change Cipher Spec報文后雷。
- 服務(wù)器同樣發(fā)送Finished報文季惯。
- 服務(wù)器和客戶端的Finished報文交換完成后,SSL連接建立完成臀突。通信會受到SSL的保護(hù)勉抓,從此處開始應(yīng)用層協(xié)議的通信,即發(fā)送HTTP請求
Http通信階段
- 應(yīng)用層HTTP通信候学,發(fā)送HTTP響應(yīng)
斷開鏈接
- 最后由客戶端斷開連接藕筋。斷開連接時,發(fā)送close_notify報文梳码。然后再發(fā)送TCP FIN來關(guān)閉與TCP的通信隐圾。
HTTPS完整性保護(hù)
在以上流程中伍掀,應(yīng)用層發(fā)送數(shù)據(jù)時會附加一種叫做MAC(Message Authentication Code)報文摘要,用來校驗(yàn)報文的完整性暇藏。
HTTPS的缺點(diǎn)
使用SSL時蜜笤,處理速度會變慢,增加服務(wù)器和客戶端的負(fù)載盐碱,非敏感信息可以直接使用HTTP