上回說到了 HTTP 與 TCP/IP、常見的 HTTP 方法、HTTP 狀態碼與HTTP 報文首部欄位。這回主要講講 HTTP 與 HTTPS。
HTTP 存在的缺點
在安全方面,HTTP 存在以下幾種缺點。
- **竊聽風險:**由於通訊使用明文傳輸,內容可能會洩露。
- **篡改風險:**第三方對傳輸的資料進行篡改,影響與服務端之間的正確通訊。
- **冒充風險:**可能會出現中間人攻擊,第三方冒充伺服器。
其實上面三種問題可以總結為通訊未加密,而 HTTPS 的出現則很好的解決了以上問題。
什麼是 HTTPS
與 HTTP 協議的明文傳輸相比,HTTPS 是將這些內容加密,確保資訊傳輸安全。最後一個字母 S 指的是 SSL(Secure Socket Layer,安全套接層)/TLS(Transport Layer Security,安全傳輸層協議) 協議,它位於 HTTP 協議與 TCP/IP 協議之間。
HTTPS 使用了非對稱加密。
私鑰只存在於伺服器上,伺服器下發的內容不可能被偽造,因為別人都沒有私鑰,所以無法加密。
所有人都有公鑰,但私鑰只有伺服器有,所以伺服器才能看到被加密的內容。
HTTPS 的工作過程
針對上面的三個缺點,說一下 HTTPS 是如何應對的。
- HTTPS 使用非對稱加密傳輸密碼,使用這個密碼加密資料,避免第三方獲取內容。
- 傳送方將資訊的
雜湊值
一起傳送過去,接收方會把解密後的資料與雜湊值進行對比,避免被篡改。 - HTTPS 由權威機構頒佈 CA(Certificate Authority,電子商務認證授權機構) 證書,使用證書校驗機制防止第三方的偽裝。
什麼是雜湊值?
雜湊值是通過雜湊演算法壓縮後得到的資料值,理論上來說不管多複雜的資料都可以通過雜湊演算法求得雜湊值。比如我們下載的 Android SDK 就會提供一個 SHA-256 校驗和,這個就屬於雜湊演算法的一種。
如何使用 HTTPS
現在有很多網站都已經廣泛使用 HTTPS,比如 www.baidu.com
。
而且現在 iOS 提交至 App Store 的應用都必須使用 HTTPS 進行網路請求。所以瞭解如何使用 HTTPS 還是很有必要的。
申請方式很簡單了,拿阿里雲舉例,開啟官網選擇安全 -> CA 證書服務,填寫資訊購買即可。
為什麼不一直使用 HTTPS
在上一會我們講過 HTTP 有三次握手,在加入 HTTPS 之後就變成了四次握手,所以效率會降低一些,不過還是能接受的。
由於 HTTPS 會降低一定的速度,還有一些額外的成本。所以對於一些不太需要加密的資訊,還是有很多企業傾向於選擇 HTTP。
最後
這個第二篇和第一篇的間隔有點長,自己最近還是有點懶,各位多多包涵。
寫部落格這種東西,感覺對自己還是有不少幫助的,雖然自己水平不高,但是本來一些比較模糊的知識點,經過查資料、寫部落格慢慢也有一些進步了。所以呢,這裡還是推薦大家嘗試一下通過寫部落格進行知識總結和學習,有的時候只是看還是容易忘的?。