爲什麼能看到https報文的明文?

一、問題的提出


昨天發生了一個跟https有關的生產bug。

事後有的小夥伴表示雖然看了一些網上的資料,但是還是不太理解https通訊的全流程,我就用比較通俗的說法給他整體講了一遍。

然後小夥伴突然問了一個很有意思的問題:既然使用https發送報文,又非對稱加密,又對稱加密(會話祕鑰)的,反正各種加密,那爲什麼我按個F12還是能看到明文?這密都加到哪兒去了?

這是一個挺好的問題,說明他真的動腦子在想了。

二、網絡七層協議


學習過基礎網絡知識的軟件工程師們,應該都瞭解這個經典的網絡七層協議(OSI模型)。

其中的應用層、表示層、會話層有時候也會合並起來簡單地表示爲“應用層”,變成五層協議。

這五層協議的分工,曾經在知乎上面看到過一個非常通俗形象的總結,借用過來:

買東西時候要封裝打包(應用層)
打包後要在包裹上貼快遞單(傳輸層)
在快遞單上要寫源地址目的地址(網絡層)
讓快遞小哥來取件(數據鏈路層)
快遞小哥騎車送件到收貨人(物理層)
(原回答地址 作者ID:後生)

三、問題的答案


所謂的 https ,其實就是 http + SSL/TLS 兩種協議的合體。

同時,http協議是應用層協議,而SSL/TLS是傳輸層協議。

那問題的答案就很清晰了,在你能夠在瀏覽器上面查看網頁之前,報文經過了你的傳輸層,SSL/TLS已經對報文進行了解密處理(快遞已經開包)。

之後所以不管是在瀏覽器上呈現,還是你按F12查看源碼,都是http協議的事情(快遞裏面的東西都已經到你手上了,對你而言不會再有啥祕密)。

四、多說幾句


現在轉行而來的軟件工程師和產品設計師的比重在行業內非常高。

對於這一現象我既有正面的看法,不可避免也有負面看法,在這裏暫且不提。

但是對於一些只經過了基礎編程訓練,而缺乏計算機基礎知識(各種算法、原理等等)的軟件工程師,我經常會勸他們多補補課。

這些基礎知識可能在你工作的99%時間裏一點作用也起不到,但是它們可以在潛移默化之間提升你能力的天花板,讓你解決問題的思路更爲廣闊。

 

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