HTTP與HTTPS之面試必備


本文主要講解Http與https的區別,以及https是怎樣加密來保證安全的。

 

首先講這倆個協議的簡單區別:

 

HTTP:超文本傳輸協議。

HTTPS:安全套接字層超文本傳輸協議HTTP+SSL

 

HTTP:客戶端和服務器端傳遞的是明文的消息。

HTTPS:將明文進行加密后再在客戶端和服務器之前進行傳遞。

 

HTTP采用80端口,而HTTPS采用443端口。

 

HTTPS需要申請證書。

 

HTTPS采用非對稱加密和對稱加密兩種加密方式來保證傳輸信息的安全性:

非對稱加密:用公鑰和私鑰來加解密(有同學這里不懂的話可以看看資料)。

對稱加密:加密解密都用同一套秘鑰。

注:非對稱加密更加安全,對稱加密速度更快。

 

https的請求流程:

  1. 客戶端(瀏覽器)向服務器請求https連接。

  2. 服務器返回證書(公鑰)到客戶端。

  3. 客戶端隨機的秘鑰A(用於對稱加密)。

  4. 客戶端用公鑰對A進行加密。

  5. 客戶端將加密A后的密文發送給服務器。

  6. 服務器通過私鑰對密文進行解密得到對稱加密的秘鑰。

  7. 客戶端與服務器通過對稱秘鑰加密的密文通信。

     

上述過程中第2步驟中是存在風險的,因為公鑰是暴露出來的,當公鑰被中間人非法截獲時,同時將公鑰替換成中間人自己的公鑰發送給客戶端,從而得到對稱加密的秘鑰,進而偽裝與客戶端通信。

 

為了解決這種問題,就引入了數字證書與數字簽名

所以在第2步驟時,服務器發送了一個SSL證書給客戶端,SSL證書中包含了具體的內容有證書的頒發機構、有效期、公鑰、證書持有者、簽名,通過第三方的校驗保證身份的合法。

一、首先客戶端會讀取證書所有者、有效期等信息進行校驗。

二、客戶端(瀏覽器)開始查找操作系統中已內置的受信任的證書發布機構CA,與服務器發過來的證書的頒發CA比對,用於驗證證書是否為合法機構頒發。

三、如果找不到,瀏覽器就會報錯。

四、如果找到了,就會取出其中的公鑰,對證書內的簽名進行解密。

五、使用相同的Hash算法對簽名進行去摘要並與服務器發來的摘要進行對比。

六、如果對比一致,則合法,這樣就得到公鑰了

 

大量面試經驗以及學習資料書籍請關注微信公眾號:AVAJ

回復"offer"進行獲取

365篇大廠java面經 你想要的我這里都有


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM