大家好,我是周杰倫。
上週,微信裡有個小夥伴兒給我發來了張圖:
我一瞅,是HTTPS啊!沒用HTTP!再一瞅,是www.baidu.com啊,不是什麼山寨網站!
我瞬間明白了些什麼,讓他點選了一下瀏覽器位址列中那個表示安全的小鎖標誌,檢視了一下網站使用的HTTPS證書。
果然不出我之所料,證書不是官方的,官方的證書長這樣:
而那個假的證書是他們公司簽發的,看來,他們公司開始對HTTPS流量做解析了,這傢伙瞬間瑟瑟發抖···
今天就來跟大家聊一下:HTTPS真的安全嗎?
現如今大家每天上網基本上看到的都是使用了HTTPS的網站,有時候特意想找一個HTTP的網站來讓新同學練習抓包分析都不好找。
但在幾年前,差不多我剛剛開始畢業工作(2014年)的時候,情況卻不是這樣的,網路上還有大量使用HTTP的網站。
大家知道,HTTP是超文字傳輸協議,資料內容在網路中都是明文傳輸的,非常不安全。同在一個宿舍裡的同學,隨便搞一箇中間人劫持就能監聽到你瀏覽了什麼視訊學習網站。
不僅如此,上網鏈路中包括寢室路由器在內的各級網路裝置都可以探知你的資料,甚至給你插入小廣告(其實這種現象現在依然存在,尤其是很多醫院、學校的網站,還是很多都是用HTTP,特別容易粘上小廣告),一不小心就跳到了廣告頁面,真是防不勝防。
不久,網站HTTPS化的浪潮很快打來,通過加密這一最簡單直接的辦法,將瀏覽器上網過程中傳輸的資料進行加密保護,上網內容的安全性得到了極大的提升。
我之前寫過一篇故事深入淺出的描述了HTTPS的工作原理,還不懂的小夥伴兒可以學習一下,我經常也會在面試中考察候選人這個問題,這可以迅速幫助我知道對方對HTTPS的瞭解程度。
我們們通過下面的快問快答環節來簡單總結一下。
看到了吧,HTTPS能夠安全的基石是非對稱加密,非對稱加密建立的前提是對方真的是對方,如果這一個前提不成立,後面的一切都是假的!
網站伺服器使用HTTPS進行通訊時,會提供一個用於證明身份的證書,這個證書,將會由某個受信任的機構簽發。
瀏覽器拿到這個證書後,會校驗證書的合法性,去檢查證書的簽發機構是不是受信任的。
那如何去檢查簽發機構是不是受信任的呢?
答案是繼續檢查簽發機構的證書,看看是誰給他簽發的,一直這樣追溯,直到找到最終的簽發者,看看最終的簽發者的證書是不是安裝在作業系統的受信任的根證書列表中。
是不是已經暈了?沒關係,我們來用百度的那個證書為例,看一下這個過程,你就知道什麼意思了。
你可以通過點選證書路徑tab頁面檢視證書的簽發鏈條:
通過這個樹形結構圖,可以清晰地看到:
baidu.com
這個域名使用的證書,是由名為GlobalSign Organization Validation CA - SHA256 - G2
的頒發者簽發的。
而這個頒發者的證書,又是由GlobalSign Root CA - R1
簽發的。
瀏覽器拿到這個最頂層的簽發證書後,去作業系統安裝的受信任的根證書列表中一找,嘿,還真讓它找著了!
於是,瀏覽器信任了這個證書,繼續接下來的通訊過程。
如果找不到,瀏覽器就會彈出不受信任的訊息,提醒使用者要當心了!
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/1...
process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARHhBeEZ4QQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
而如果,有人在你的電腦中安裝了一個自己的根證書進去,騙過瀏覽器,這一切安全的根基也就傾覆了。
而文章開頭那個小夥伴兒之所以彈出了那個視窗,多半是根證書還沒安裝進去,就開始了HTTPS劫持。因為重啟之後,便再也沒有這些提示資訊,一切如往常一樣風平浪靜,只不過上網的流量已經被公司悉數掌握。
看到這裡,還不趕緊點開瀏覽器位址列的那把鎖,看看證書的簽發機構是不是你們公司?
如果是,那恭喜你了~
最後,給大家留一個思考題:微信會受到這種HTTPS劫持的影響嗎? 歡迎在評論區發表你的看法!