HTTPS协议入门
HTTPS協(xié)議入門
1. HTTPS出現(xiàn)的背景
雖然HTPP協(xié)議很優(yōu)秀并且方便,但是不得不正視HTTP協(xié)議存在的一些問題:
- 通信使用明文(不加密),內(nèi)容可能會被竊聽;
- 不驗證通信雙方的身份,因此有可能遭遇偽裝;
- 無法證明報文的完整性,所以有可能已遭篡改;
這些問題不僅在HTTP協(xié)議上出現(xiàn),其他未加密的協(xié)議中也會存在這類問題。
由于這些問題的存在,HTTPS協(xié)議就應(yīng)運而生,HTTPS,超文本傳輸安全協(xié)議,是和SSL(Secure Socket Layer,安全套接層)或者TLS(Transport Layer Security,安全傳輸層協(xié)議)組合使用的,通常HTTP直接和TCP通信,當(dāng)使用SSL時,則演變成先和SSL通信,再由SSL和TCP通信了。
2. HTTPS的三大功能
上面提到了HTPP協(xié)議的不足,下面說一下HTTPS是如何解決這三個問題的。
2.1 通信使用明文(不加密),內(nèi)容可能會被竊聽
在網(wǎng)絡(luò)上傳輸信息,本身就是可以被他人截獲的,比如通過抓包工具,第三者就可以在同局域網(wǎng)的一臺主機,或者路由器或者互聯(lián)網(wǎng)的任何地方都可能被截獲數(shù)據(jù)。HTPP使用明文傳輸,相當(dāng)于你傳輸?shù)臄?shù)據(jù)完全暴露在了網(wǎng)絡(luò)上。
HTTPS傳輸數(shù)據(jù)的時候會對通信進行加密,使用SSL建立安全線路之后,就可以在這條線路上進行HTTP通信了。相當(dāng)于單獨建立了一條安全信道。
2.2 不驗證通信雙方的身份,因此有可能遭遇偽裝
HTTP協(xié)議中的請求和響應(yīng)不會對通信雙方進行確認,也就是說存在“服務(wù)器是否就是發(fā)送請求中URI真正的主機,返回的響應(yīng)是否是真的返回到實際提出請求的客戶端”等類似問題。并且,由于不存在通信雙方的處理步驟,任何人都可以發(fā)起請求。可能會出現(xiàn)DOS攻擊等問題。
HTTPS中SSL就可以確認確認通信方,它提供了一種被稱為證書的手段,證書由值得信賴的第三方機構(gòu)頒發(fā),用以證明服務(wù)器和客戶端是實際存在的,另外偽造證書從技術(shù)角度說是異常困難的一件事,所以只要能確認通信方持有的證書就可以判斷通信方的真實意圖。
2.3 無法證明報文的完整性,所以有可能已遭篡改
HTTP協(xié)議無法確認客戶端發(fā)出的請求和服務(wù)端接收到的請求是相同的,同樣,也無法確認服務(wù)端發(fā)送的響應(yīng)和客戶端接收的響應(yīng)是相同的。很容易出現(xiàn)中間人攻擊。
雖然HTTP協(xié)議可以使用md5等信息摘要算法保證數(shù)據(jù)完整性,但是MD5本身都可能被篡改,也就無法保證其安全性。SSL提供了摘要功能。可以保證數(shù)據(jù)的完整性。
從HTTPS的功能來看,可以總結(jié)為:HTTP+加密+認證+完整性保護=HTTPS。
3. HTTPS的混合加密機制
首先先來談?wù)剝煞N加密方法:
- 共享密鑰加密:加密和解密使用相同的密鑰,但是在通信的時候需要把密鑰也一并發(fā)送,這樣有可能被別人截獲;
- 公開密鑰加密:加密和解密使用不同的密鑰,服務(wù)器提供公開密鑰,客戶端使用公開密鑰對數(shù)據(jù)進行加密,然后服務(wù)器使用私有密鑰對密文進行解密,這樣就保證密文不會被破解。
但是使用公開密鑰加密方式傳輸數(shù)據(jù)比較慢,所以HTTPS結(jié)合了兩者的優(yōu)點,使用混合加密機制,首先在交換密鑰的時候使用公開密鑰加密方式,確認連接后,傳輸數(shù)據(jù)使用共享密鑰加密方式。
4. HTTPS使用場景
當(dāng)使用HTTPS時,通信會變慢,導(dǎo)致通信變慢的原因有兩個,一是網(wǎng)絡(luò)負載,當(dāng)使用HTTPS進行通信時,網(wǎng)絡(luò)負載比HTTP要高2-100倍。而是由于HTTPS每次通信都要加解密,對CPU的消耗也很大。所以一般只有在傳輸機密信息時使用HTTPS,比如用戶密碼,銀行信息等。
再有就是使用HTTPS需要支付購買證書的費用,一些機構(gòu)考慮到這點也可能優(yōu)先選擇HTTP協(xié)議。
參考:《圖解HTTP》
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: BZOJ 4584 [Apio2016]
- 下一篇: 互联网高并发架构设计模式