Http和HTTPS
Tags: 面試
1. 爲什麼需要Https
1.1 Http協議的缺點
- 通信使用明文傳輸,內容可能會被竊聽。
- 不驗證通信方的身份,有可能遭遇跨站請求僞造。
- 無法證明報文的完整性,有可能發生報文被修改的狀況。
1.2 Https如何解決上述問題。
Https是在Http的基礎之上加入加密處理,認證機制和完整性保護的。即Http+加密+認證+通信保護=Https
,
- 通過加密可以防止明文傳輸的時候密碼等關鍵信息被竊取。
- 通過認證確保通信方的身份,防止出現跨站點的請求僞造攻擊。
- 通過完整性保護,確保在信息的傳輸過程中沒有遭到信息篡改的狀況。
1.3 實現方案
Https
並不是一種新的協議,只是http
通信接口部分使用ssl/tls
協議代替而已。通常http
是直接和tcp
進行通信確保在不收到外部干擾的情況下,保證信息的完整性接收。但是Http
協議是在http
和tcp
之間加入了ssl/tls
。讓http
先和ssl/tls
進行通信,然後ssl/tls
再去和tcp
進行通信。在中間的ssl/tls
的過程中對傳輸的信息進行加密,認證,保護
。 去防止上面講到的Http
的缺點。
其實所謂的Https就是在Http和TCP之間加了一個SSL。
2. SSL/TLS是什麼
SSL是(Secure Sockets Layer)
的縮寫,中文成爲安全套接層。這個是網景公司(NetScape網景瀏覽器?)
設計的。
爲何要發明SSL這個協議?以爲之前的HTTP協議是明文的,存在很多缺點具體的看上面。發明這個協議就是爲了解決上述問題。
SSL/TLS
協議的基本思路就是採用公鑰加密,也就是說,客戶端向服務端索要公鑰,然後用公鑰加密信息,服務器收到密文之後,用自己的私鑰解密。但是這裏存在兩個問題:
- 如何保證公鑰不被篡改
- 公鑰加密,私鑰解密計算量太大,比較耗費時間如何減少耗用的時間。
解決方案
- 將公鑰放在數字證書當中,只要證書是可信的,那麼公鑰就一定是可信的。
- 每一次對話(Session),客戶端和服務端都生成一次對話祕鑰,又變成了對稱加密,且對稱加密的祕鑰泄露的風險會大大降低。
這種搭配使用可以延伸到GC,Redis鎖。