關於面試:什麼是Http,什麼是Https這段話隨便看看就好瞭,除瞭文字能看懂,其他的咱也看不懂,嗐Http (HTTP-Hypertext transfer protocol) 是一個簡單的請求-響應協議,它通常運行在TCP之上。它指定瞭客戶端可能發送給服務器什麼樣的消息以及得到什麼樣的響應。請求和響應消息的頭以ASCII碼形式給出;而消息內容則具有一個類似MIME的格式。這個簡單模型是早期Web成功的有功之臣,因為它使開發和部署非常地直截瞭當。Https(全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證瞭傳輸過程的安全性 。HTTPS 在HTTP 的基礎下加入SSL 層,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。 HTTPS 存在不同於 HTTP 的默認端口及一個加密/身份驗證層(在 HTTP與 TCP 之間)。這個系統提供瞭身份驗證與加密通訊方法。它被廣泛用於萬維網上安全敏感的通訊,例如交易支付等方面 。粗解Http、Https的區別(學疏才淺,不敢詳解)Http是超文本傳輸協議,數據明文傳輸,所以會被抓包導致信息泄露,有安全風險問題!Https 則是具有安全性的SSL加密傳輸協議。Http和Https使用的是完全不同的連接方式用的端口也不一樣,前者是80,後者是443。Http的連接很簡單,是無狀態的。HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議。Https協議需要到CA付費申請證書,HTTP是應用層協議,同其他應用層協議一樣,是為瞭實現某一類具體應用的協議,並由某一運行在用戶空間的應用程序來實現其功能。HTTP是一種協議規范,這種規范記錄在文檔上,為真正通過HTTP協議進行通信的HTTP的實現程序。HTTP是一種無狀態協議,即服務器不保留與客戶交易時的任何狀態。這就大大減輕瞭服務器記憶負擔,從而保持較快的響應速度。HTTP是一種面向對象的協議。允許傳送任意類型的數據對象。它通過數據類型和長度來標識所傳送的數據內容和大小,並允許對數據進行壓縮傳送。當用戶在一個HTML文檔中定義瞭一個超文本鏈後,瀏覽器將通過TCP/IP協議與指定的服務器建立連接。上面概述其實是很廢話的,忽略吧!!!上圖是Http的工作流程圖,Https會在Tcp首部這一層前加上安全層(SSL/TSL)加解密Http報文註:TLS是SSL的升級替代版,具體發展歷史可以參考傳輸層安全性協議。Https解決的問題Https協議因為采用密文傳輸,要比Http協議安全。1、信任主機的問題。采用https的server 必須從CA申請一個用於證明服務器用途類型的證書. 改證書隻有用於對應的server 的時候,客戶度才信任次主機。所以目前所有的銀行系統網站,關鍵部分應用都是https的。客戶通過信任該證書,從而信任瞭該主機。其實這樣做效率很低,但是銀行更側重安全。這一點對我們沒有任何意義,我們的server采用的證書不管自己issue 還是從公眾的地方issue,客戶端都是自己人,所以我們也就肯定信任該server。2、通訊過程中的數據的泄密和被竄改。(1)一般意義上的https,就是 server 有一個證書,主要目的是保證server 就是他聲稱的server,這個跟第一點一樣。b) 服務端和客戶端之間的所有通訊,都是加密的。i. 具體講,是客戶端產生一個對稱的密鑰,通過server 的證書來交換密鑰。一般意義上的握手過程。ii. 加下來所有的信息往來就都是加密的,第三方即使截獲,也沒有任何意義,因為他沒有密鑰,當然竄改也就沒有什麼意義瞭。(2)少許對客戶端有要求的情況下,會要求客戶端也必須有一個證書。這裡客戶端證書,其實就類似表示個人信息的時候,除瞭用戶名/密碼,還有一個CA 認證過的身份,應為個人證書一般來說上別人無法模擬的,所有這樣能夠更深的確認自己的身份。目前少數個人銀行的專業版是這種做法,具體證書可能是拿U盤作為一個備份的載體。HTTPS 在 HTTP 與 TCP 層之間加入瞭 SSL/TLS 協議,可以很好的解決瞭上述的風險:信息加密:交互信息無法被竊取,但你的號會因為「自身忘記」賬號而沒。 校驗機制:無法篡改通信內容,篡改瞭就不能正常顯示,但百度「競價排名」依然可以搜索垃圾廣告。 身份證書:證明淘寶是真的淘寶網,但你的錢還是會因為「剁手」而沒。可見,隻要自身不做「惡」,SSL/TLS 協議是能保證通信是安全的。作者:BuildF鏈接:https://juejin.cn/post/6904227431939342344