HTTP和HTTPS有什麼區別?

菜雞每日一面系列打卡39

每天一道面試題目

助力小夥伴輕鬆拿offer

堅持就是勝利,我們一起努力!

 

題目描述

HTTP和HTTPS有什麼區別?

 

題目分析

HTTP和HTTPS的區別是面試過程中經常被問到的問題之一,其出場頻率甚至不亞於上一篇所提到的Cookie和Session的區別與聯繫。

閒話少說,接下來,隨菜雞一起去看看吧!

 

題目解答

HTTP(HyperText Transfer Protocol)

HTTPS(Hypertext Transfer Protocol Secure)

從名字就可以看出,二者直接的差別就在於Secure。

換句話說,HTTPS是安全的HTTP。

HTTP和HTTPS的具體差別表現在以下方面:

  • HTTP是明文傳輸,數據未經過加密,客戶端與服務器之間無法進行身份驗證,安全性較差,HTTPS(HTTP + TLS)數據傳輸過程是加密的,客戶端與服務器之間可以進行身份驗證,安全性較好。

  • HTTP不需要證書,HTTPS需要證書。

  • HTTP直接面向TCP,使用TCP三次握手建立連接,而HTTPS直接面向TLS,通過TLS進行安全性驗證,然後TLS面向TCP,這使得HTTP頁面響應速度比HTTPS快。

  • 同樣的原因,HTTPS比HTTP更加耗費資源

這裏有很關鍵的一點,就是上文提到的TLS。這是HTTPS提升安全性的關鍵。小夥伴們可能聽得更多的是SSL。二者的關係如下:

  • SSL(Secure Socket Layer)安全套接層。

  • TLS(Transport Layer Security)傳輸層安全性協議,是基於SSL3.0設計的協議。

TLS實現安全性的機制涉及到了密碼學的一些基礎知識,它採用了RSA握手和密鑰交換來進行實現。

具體而言握手階段涉及四次通信,握手階段的所有通信都是明文的。(以下內容參考自阮一峯老師的博客)

  • 客戶端發出請求(ClientHello),客戶端先向服務器發出ClientHello請求,主要向服務端提供以下信息:

    • 支持的加密通信協議版本

    • 隨機數A(客戶端生成)

    • 支持的加密方法

    • 支持的壓縮方法

  • 服務端迴應(SeverHello),服務端向客戶端發出SeverHello迴應,包含以下信息:

    • 確認使用的加密通信協議版本

    • 隨機數B(服務端生成)

    • 確認使用的加密方法

    • 服務端證書

  • 客戶端迴應,客戶端驗證服務端證書。如果驗證未通過,則會向訪問者發出警告。否則,客戶端從證書中取出服務端的公鑰。然後向服務端發送以下信息:

    • 經過服務端公鑰加密的隨機數C

    • 編碼改變通知

    • 客戶端握手結束通知(通信參數的hash值,可供服務端校驗)

  • 服務器的最後迴應,服務器生成會話密鑰。然後,向客戶端發送以下信息:

    • 編碼改變通知

    • 服務器握手結束通知(通信參數的hash值,可供客戶端校驗)

TLS握手過程至此結束,後續將通過會話密鑰進行加密通信。

以上便是菜雞對HTTP和HTTPS之間區別的一些總結,供大家參考。

 

相關鏈接

字節跳動面試最愛問的Cookie和Session,到底有什麼區別?

 

參考資料

http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

學習 | 工作 | 分享

長按關注“有理想的菜雞

只有你想不到,沒有你學不到

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