文章首發在個人我的博客:www.brandhuang.com/article/158…web
若是喜歡本文但願能點個贊~瀏覽器
固然能夠關注我來獲取後續文章安全
也能夠關注我我的博客服務器
HTTP 的不足:網站
HTTP 和 SSL(Secure Socket Layer,安全套接層) 或 TLS(Transport Layer Security,安全傳輸協議)組合使用來加密 HTTP。加密
加密後的內容依然可能被竊聽,只是可能讓人沒法破解報文的實際含義
code
HTTP 和 SSL 組合使用就被稱爲HTTPS
。cdn
對 HTTP 協議傳輸的內容進行加密,須要客戶端和服務端同時具備加密和解密的能力。與 SSL
或者 TLS
將整個通訊線路加密
不一樣,因此內容任有被篡改的風險。接口
在 HTTP
通訊時,不存在確認通訊方的步驟,任何人都能發起請求,服務器收到請求後,也都會返回一個響應(僅限於發送端的 IP 地址和端口沒有被 Web 服務器設爲限制訪問)
內存
不確認通訊方會存在如下隱患:
有多是已假裝的服務器
。有多是已假裝的客戶端
。是否具有訪問權限
。(某些重要信息只想發給特定用戶通訊的權限)沒法阻止海量請求下的DoS攻擊
(Denial of Service,拒絕服務攻擊)SSL 不只提供加密處理,還使用了一種叫證書
的手段,用於確認通訊方
HTTP 沒法證實通訊報文的完整性,換句話說,沒有辦法確認,發出的請求/響應和接收到請求/響應是相同的
在傳輸途中遭攻擊者攔截並篡改內容的攻擊叫中間人攻擊
。
經常使用的防篡改方式:
MD5
和 SHA-1
等散列值校驗方法,以及用來確認文件的數字簽名
方法。
但以上方式仍沒法百分百保證結果正確,由於若是 MD5 、數字簽名等自己被改寫的話,用戶是沒法感知的,因此有必要使用 HTTPS
HTTPS 協議並不是一種新協議
,只是 HTTP
通訊接口部分用 SSL
和 TLS
協議替代。
一般 HTTP
直接和 TCP
通訊,當使用 SSL
後,則變成先和 SSL
通訊,再由 SSL
和 TCP
通訊。
SSL
採用的是公開密鑰加密
的加密處理方式
對稱密鑰加密
:加密和解密同用一個密鑰,也稱爲共享密鑰加密
公開密鑰加密
:使用一對非對稱密鑰,一把私有密鑰(private key)
,一把公開密鑰(public key)
。公開密鑰隨意發佈,經過本身的私有密鑰進行解密。HTTPS採用混合加密機制,即公開密鑰和共享密鑰混合加密的機制
因爲公開密鑰加密處理速度比共享密鑰加密慢
。
因此要結合二者優點,將多種方式結合起來用於通訊: 在交換密鑰(共享密鑰加密的密鑰)環節使用「公開密鑰加密方式」,以後創建通訊交換報文階段則使用「共享密鑰加密」
。
因爲「公開密鑰加密」的方式沒法證實公開密鑰自己是真正的公開密鑰,因此採用數字證書認證機構和其相關機構頒發的公開密鑰證書
來解決上述問題
數字證書認證機構業務流程:
上述的
「認證機構的公開密鑰」
必須安全的轉交給客戶端,爲了保證安全,一般是瀏覽器廠商發佈版本時,一般會事先內置
經常使用認證機構的公開密鑰。
SSL 速度慢分兩種:通訊慢
、大量消耗CPU、內存等資源致使處理速度慢
(由於SSL須要加密處理,在客戶端和服務器都須要進行)
既然 HTTPS 那麼安全,爲何全部的 web 網站不一直使用 HTTPS?
因此一般只有敏感信息進行 HTTPS 通訊。
本文先整理這麼多吧,反正一次也消化不完。
還也能夠關注我公衆號「九零後重慶崽兒」。