一、都說https安全,其安全體現在兩方面

1、數據傳輸過程中防止被嗅探,即使嗅探到也看不懂啊,因為數據是加密的,加密過程可以百度,簡單說就是先用非對稱加密保證伺服器安全拿到對稱密鑰,後續的請求響應都用對稱密鑰加解密;

2、保證瀏覽器與真正的伺服器對話,而不是冒充的釣魚網站。如何保證?這就要用到證書了,就像我們出示身份證一樣。為什麼身份證管用,因為身份證是公安局頒發的啊,所以互聯網裡也有這樣的權威機構,它們來頒發權威證書證明百度就是百度,知乎就是知乎;

二、關於證書需要了解的知識點

1、證書不是什麼NB的東西,誰都可以頒發,Fiddler也可以啊,關鍵是你信任不信任的問題;

2、證書的信任鏈,"證書C"是根證書,你信任它就代表你信任由它頒發的A、B,同樣你也必須信任由A、B頒發的A1、A2、B1、B2,所以只要你信任了Fiddler的根證書,Fiddler再頒發任何證書瀏覽器都自動信任了,so你該猜到Fiddler如何做了。

三、Fiddler工作原理

1、Fiddler啟動後會變成一個代理伺服器。站在瀏覽器的角度看,它是伺服器。站在伺服器的角度看它是瀏覽器;

2、當我們訪問知乎時,過程是這樣的,首先瀏覽器和Fiddler建立連接,由於是https請求,所以瀏覽器要和Fiddler要證書了,於是Fiddler就發一個了,證書是這樣的,沒什麼高大上,重點看"頒發給"、"頒發者",Fiddler就是這樣簡單粗暴,每個https站點都頒發一個(證書很不值錢的樣子)

但是此時瀏覽器返回是這樣的

因為這個證書DO_NOT_TRUST_FiddlerRoot(根證書)我們並未信任,如下圖:

所以我們只要導入Fiddler的根證書就可以了,這樣從瀏覽器到Fiddler就OK了,至於從Fiddler到知乎伺服器,就和我們沒用Fiddler時瀏覽器到伺服器是一樣的,並不需要信任證書,因為知乎的證書由已經被信任的證書(權威機構)頒發,如下圖:

於是Fiddler將知乎伺服器返回的數據再返回給瀏覽器就好了。

四、安全問題

如果第三方提供類似Fiddler這種方式的代理就要小心了,因為瀏覽器拿到的公鑰是Fiddler給的,私鑰在Fiddler這裡,所以Fiddler可以解密瀏覽器原本發往知乎伺服器的數據;

五、網上代理服務商提供的代理方式

網上有很多免費代理,也有支持https的代理,這種代理為什麼不需要證書,其工作原理是怎樣的?

這種代理的工作方式與Fiddler有本質區別,其原理是用http連接發送https流量,具體步驟如下

1、瀏覽器發送http的connect建立到代理伺服器的隧道(個人理解之所以稱為隧道是因為數據直接走網路傳輸層,不走應用層,所以無所謂https中的那些規則了),注意此時是http明文,所以代理直到瀏覽器要請求哪個伺服器;

2、代理和目標伺服器建立連接,此時是https;

3、上述成功完成後,瀏覽器和目標伺服器就建立了間接連接,之後數據都通過代理進行盲轉發;

六、httpclient為什麼可以不關注證書

我們用httpclient發送https請求時,可以導入證書,也可以不導入證書(繞過證書驗證),為什麼?因為證書的驗證只是用來證明你就是你,當我們很明確我們的訪問目標時確實沒必要進行驗證,但證書還是需要的,因為我們要從中獲取公鑰,這些httpclient會幫我們完成。

通過以上介紹,應該明白類似阿布雲的代理服務為什麼使用隧道方式服務了


推薦閱讀:
相关文章