女朋友報考公務員,卻讓我向她解釋HTTP與HTTPS的區別……

昨天晚上我正在看書呢,女朋友跑過來問她的電腦去哪了。我說看看沙發上,你剛纔不是還在用ipad報考公務員考試嗎,怎麼樣了。她說她用ipad登錄不上報考網站,想用電腦試試,並給我看了下面這張圖。
在這裏插入圖片描述
我說別直接輸入www.scs.gov.cn,輸入http://www.scs.gov.cn/
試試。過了幾分鐘,她開心地告訴登錄成功了,並問我這是怎麼回事。我說如果直接輸入www.scs.gov.cn,瀏覽器默認的網站前綴是https://
,即網址是https://www.scs.gov.cn,而一般的政府網站的網站前綴是http://,並且給她講解了https與http的區別。
在這裏插入圖片描述

HTTP與HTTPS的區別

安全性上,HTTPS是安全超文本協議,在HTTP基礎上有更強的安全性。簡單來說,HTTPS是使用TLS/SSL加密的HTTP協議

申請證書上,HTTPS需要使用ca申請證書

傳輸協議上, HTTP是超文本傳輸協議,明文傳輸;HTTPS是具有安全性的 SSL 加密傳輸協議

連接方式與端口上,http的連接簡單,是無狀態的,端口是 80; https 在http的基礎上使用了ssl協議進行加密傳輸,端口是 443

HTTP的工作過程

HTTP由請求和響應構成,是一個標準的客戶端服務器模型(C/S)。HTTP協議永遠都是客戶端發起請求,服務器回送響應。

  1. 地址解析。域名系統DNS解析域名得到主機的IP地址

  2. 封裝HTTP請求數據包。封裝的內容有以上部分結合本機自己的信息。

  3. 封裝成TCP包,建立TCP連接(TCP的三次握手)

  4. 客戶機發送請求命令。 建立連接後,客戶機向服務器發送一個請求

  5. 服務器響應。服務器接到請求後,給予相應的響應信息

  6. 服務器關閉TCP連接。一般Web服務器向瀏覽器發送了請求數據,它要關閉TCP連接

  7. 客戶端解析報文,解析HTML代碼,並渲染

HTTPS的實現原理

HTTP以明文方式傳輸信息,不能保障數據傳輸的安全。

HTTPS在HTTP的基礎上加入了SSL協議。

HTTPS使用SSL協議和TLS協議

SSL 依靠證書來驗證服務器的身份,併爲瀏覽器和服務器之間的通信加密。

HTTPS的通信過程

https通信時,首先建立ssl層的連接,客戶端將ssl版本號和加密組件發到服務器端,服務器端收到後對ssl版本號和加密組件進行匹配,同時將CA證書及密鑰發送到客戶端。客戶端對證書進行驗證,驗證通過後使用非對稱加密對數據通信時的密鑰進行協商。協商後得到一致的獲得一致的對稱加密密鑰。然後使用對稱加密算法進行TCP連接,後續的過程跟http的過程一致。三次握手,數據交換,四次揮手,通信結束。

過程如下 :

  1. 客戶端和服務器端通過TCP建立連接。

  2. 客戶端向服務器發送HTTPS請求。

  3. 服務器響應請求,並將數字證書發送給客戶端,數字證書包括公共祕鑰、域名、申請證書的公司。

  4. 客戶端收到服務器端的數字證書之後,會驗證數字證書的合法性。

  5. 如果公鑰合格,那麼客戶端會生成一個用於進行對稱加密的密鑰client key,並用服務器的公鑰對客戶端密鑰進行非對稱加密。

  6. 客戶端會發起HTTPS中的第二個HTTP請求,將加密之後的客戶端密鑰發送給服務器。

  7. 服務器接收到客戶端發來的密文之後,會用私鑰對其進行非對稱解密,得到客戶端祕鑰。並使用客戶端祕鑰進行對稱加密,生成密文併發送。

  8. 客戶端收到密文,並使用客戶端祕鑰進行解密,渲染網頁。

在這裏插入圖片描述

參考鏈接:

https://www.jianshu.com/p/14cd2c9d2cd2

文章持續更新,可以微信搜索公衆號「 雲璈公子 」閱讀,回覆【資料】【面試】【簡歷】有我準備的一線大廠面試資料和簡歷模板,同時我的GitHub https://github.com/1170300826/JavaInterview 有互聯網一線大廠面試指南。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章