前言:不管是前端開發、后端開發還是測試工程師的面試題,都可能問到HTTP和HTTPS。因此弄清楚這兩個是十分重要的。
什么是HTTP?
超文本傳輸協議,是一個基於請求與響應,無狀態的,應用層的協議,常基於TCP/IP協議傳輸數據,互聯網上應用層最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標准。設計HTTP的初衷是為了提供一種發布和接受HTML頁面的方法。
什么是HTTPS?
基於HTTP協議,通過SSL或TLS提供加密處理數據,驗證對方身份以及數據完整性保護。
- 內容加密:采用混合加密技術,中間者無法直接查看明文內容。
- 驗證身份:通過證書認證客戶端訪問的是自己的服務器。
- 保護數據完整性:防止傳輸的內容被中間人冒充或者篡改。
混合加密:結合對稱加密和非對稱加密技術。客戶端使用對稱加密生成秘鑰對傳輸數據進行加密,然后使用非對稱加密的公鑰再對秘鑰進行加密,所以網絡上傳輸的數據是被秘鑰加密的密文和用公鑰加密后的秘鑰,因此即使被黑客截取,由於沒有私鑰,無法獲取到加密明文的秘鑰,便無法獲取到明文數據。
HTTPS是如何工作的?
基礎知識:
非對稱加密的特點:
- 任何經過A的公鑰進行過加密的信息,只有A的私鑰才能解密。
- 任何有公鑰的人可以確認對方發送的信息是被私鑰加密過的。
HTTP和HTTPS的區別:
- https協議需要到CA申請證書,一般免費的證書較少,因而需要一定的費用。
- http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的SSL加密傳輸協議。
- http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443.
- http的連接很簡單,是無狀態的,https協議是有SSL + HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。