HTTPS基礎(chǔ)

HTTPS是在HTTP和TCP之間添加了安全傳輸層,目前使用TLS作為安全傳輸層

HTTPS需要解決的問題

  • 服務(wù)器認證(客戶端知道他們是在與真正的而不是偽造的服務(wù)器通話)
  • 客戶端認證(服務(wù)器知道他們是在與真正的而不是偽造的客戶端通話)
  • 完整性(客戶端和服務(wù)器的數(shù)據(jù)不會被修改,中間人攻擊,簡單的方法是提供傳輸數(shù)據(jù)的md5,但是md5依舊可以被重新計算)
  • 加密(客戶端和服務(wù)器的對話是私密的,無需擔心被竊聽)
  • 效率(一個足夠快的算法,以便低端的客戶端和服務(wù)器使用)
  • 普適性(基本上所有的客戶端和服務(wù)器都支持這些協(xié)議)
  • 管理的可擴展性(在任何地方的任何人都可以立即進行安全通信)
  • 適應(yīng)性(能夠支持當前最知名的安全方法)
  • 在社會上的可行性(滿足社會的政治文化需要)

HTTPS提供的解決方案

  • 通過可證明組織真實性的 EV SSL證書 可以證明服務(wù)器是否規(guī)范
  • 使用客戶端證書確認客戶端
  • 應(yīng)用層在發(fā)送數(shù)據(jù)時通過附加MAC(Message Authentication Code)的報文摘要來保證數(shù)據(jù)完整性
  • HTTPS采用共享密鑰加密和公開密鑰加密兩者并用的混合加密機制,若密鑰能夠?qū)崿F(xiàn)安全轉(zhuǎn)換,那么有可能會考慮僅使用公開密鑰來通信。但是公開密鑰加密和共享密鑰加密相比,其處理速度要慢??梢酝ㄟ^公開密鑰建立一個安全的通信,然后傳遞共享密鑰,降低資源的消耗。
  • HTTPS在傳輸?shù)臅r候需要進行SSL通信會增加網(wǎng)絡(luò)負載,同時數(shù)據(jù)的加密和解密也會增加CPU和內(nèi)存的消耗,因此HTTPS會比HTTP效率低

SSL通信

下圖展示SSL通信的簡單過程

ssl_shake.png

  1. 客戶端發(fā)送 Client Hello 報文開始SSL通信。報文中包含客戶端支持的SSL的指定版本,加密組件列表
  2. 服務(wù)器可進行SSL通信時,會以 Server Hello 報文作為應(yīng)答。和客戶端一致,在報文中包含SSL版本以及加密組件。服務(wù)器的加密組件是從接收到的客戶端加密組件中篩選出來的
  3. 之后服務(wù)器發(fā)送 Certificate 報文。報文中包含公開密鑰證書
  4. 最后服務(wù)器發(fā)送 Server Hello Done 報文通知客戶端,最初階段的SSL握手協(xié)商結(jié)束
  5. SSL第一次握手結(jié)束之后,客戶端以 Client Key Exchange 報文作為回應(yīng)。報文中包含通信加密中使用的一種被稱為 Pre-master secret 的隨機密碼串。該報文已用步驟3中的公開密鑰進行加密
  6. 接著客戶端繼續(xù)發(fā)送 Change Cipher Spec 報文。該報文會提示服務(wù)器,在報文結(jié)束后的通信會采用 Pre-master secret 密鑰加密
  7. 客戶端發(fā)送 Finished 報文。該報文包含連接至今全部報文的整體校驗值。這次握手協(xié)商是否能夠成功,要以服務(wù)器是否能夠正確解密該報文作為判定標準
  8. 服務(wù)器同樣發(fā)送 Change Cipher Spec 報文
  9. 服務(wù)器同樣發(fā)送 Finished 報文
  10. 服務(wù)器和客戶端的 Finished 報文交換完畢之后,SSL連接就算建立完成,通信會受到SSL的保護
  11. 應(yīng)用層協(xié)議通信,客戶端發(fā)送HTTP請求,服務(wù)器發(fā)送HTTP應(yīng)答
  12. 客戶端斷開連接。斷開連接時,發(fā)送 close_notify 報文

參考資料

  1. HTTP權(quán)威指南
  2. 圖解HTTP
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容