安卓微信鏈接fiddler等抓包工具沒法抓取https

問題描述:

在手機鏈接pc的fiddler後,安卓微信打不開https頁面,安卓的瀏覽器、qq等均可以正常訪問https,ios也均可以,就只有安卓微信放問https是空白頁面html

 

解決思路:

一. 證書沒有正確安裝

鏈接抓包工具沒法訪問https的,首先判斷是證書問題。在瀏覽器訪問  10.0.0.99:8888  ,點擊最下面的證書進行安裝ios

安裝好證書後,發現仍然訪問不了。瀏覽器

 

從新整理思路,安卓瀏覽器和qq等均可以正常訪問https說明證書配置是正確的。惟獨在微信訪問異常,在百度後查到有其餘人遇到相似的問題,說是證書鏈不完整,致使瀏覽器沒法信任你安裝的證書。緩存

證書鏈其實就是描述證書的簽名環節,就好比是 A 頒發證書給 B ,B頒發證書給C,而後咱們手裏的就是  證書C。當證書鏈不完整的狀況下,也就是沒有描述咱們手中的證書C是由誰辦法的,因此致使的瀏覽器不認爲你這個證書是可信的受權證書。服務器

二. 如何驗證證書鏈是否完整?

1.  若是是外網,能夠訪問 https://www.geocerts.com/ssl-checker ,輸入域名進行驗證SSL證書鏈是否完整

 

2. 若是是內網,則可使用命令驗證:

openssl s_client -connect    x.x.x.x:443

// s_client爲一個SSL/TLS客戶端程序,與s_server對應,它不只能與s_server進行通訊,也能與任何使用ssl協議的其餘服務程序進行通訊。 // -connect host:port:設置服務器地址和端口號。若是沒有設置,則默認爲本地主機以及端口號4433。

 鏈接內網的IP後:微信

 

其中0、1是證書鏈中每一級證書的序號。0是要被驗證的網站所用的證書。其CN對應網站域名。工具

每個序號後面,s 開頭的一行是指證書,i 開頭的一行是指此證書由誰簽發。測試

0 的CN包含一個英文域名 static.xxx.com 。它的簽發者是 TrustAsia Technologies, Inc./OU=Symantec Trust Network/OU=Domain Validated SSL/CN=TrustAsia DV SSL CA 網站

1 的證書就是0的簽發者。而1本身又是由另外一個證書  VeriSign Class 3 Public Primary Certification Authority  簽發的。加密

 

因此這麼一級級看下來,瀏覽器認爲,1的簽發者我認識,安裝包裏有提到,VeriSIign嘛。簽名正確、驗證無誤,因此信任1。那麼也應該信任1簽發的0。因此這個網站能夠信任。

然而,若是網站配置時,在crt文件中只包含了本身,而沒包含一個完整到能夠被瀏覽器內置數據驗證的證書鏈,就有可能被瀏覽器拒絕。好比

openssl s_client -connecttouko.moe:443 

--- Certificate chain 0 s:/CN=touko.moe i:/C=CN/O=WoSign CALimited/CN=WoSign CA Free SSL CertificateG2 ---

只有0一組。說明s行中的touko.moe由 i 行中的WoSign CA Free SSL CertificateG2簽發。沒了。

 

這就是此坑最神奇之處:瀏覽器此時是否驗證失敗,是不必定的。有2種狀況:

A、瀏覽器自安裝以來,從未見過這個i。那麼驗證會失敗。

B、瀏覽器之前見過、而且驗證過i,那麼驗證會成功。

 

一般管理員本身會去證書發行商的https網站買證書,瀏覽器就會驗證,而後將驗證成功的中間證書全都緩存下來,爲之後節省時間。當管理員(錯誤地)配置完本身的網站,去瀏覽測試的時候,徹底不會遇到問題。由於他的瀏覽器已經認識這個中間證書了。

總結:

經過證書鏈驗證發現,咱們內網的證書鏈是完整無誤的。

 

三. 微信本身的問題

再次整理思路,用安卓微信訪問其餘的https網站好比百度、csdn等都是空白頁,若是是咱們的證書鏈問題,那其餘網站的證書鏈是應該沒問題的,爲何也訪問不了?因此證書鏈問題徹底排除掉。

那既然不是本地證書問題,也不是咱們服務端證書鏈問題,qq、瀏覽器又都能正常訪問,ios也正常,說明fiddler端是沒問題的,這個時候懷疑是否是微信本身的問題?

OK,那首先考慮爲何fiddler能夠抓取https的包呢?

fiddler巧妙就巧妙在僞造CA證書的地方了,我(fiddler)本身編造一個私鑰和公鑰,做爲簽名憑證發送給瀏覽器,提交到服務端,服務端根據公鑰簽名返回,我(fiddler)僞造的密鑰,天然就能解開了。

因此,你知道,我知道,你們都知道,爲了防止軟件被fiddler抓包,開發者會內置SSL證書,直接經過本身的證書籤名加密,而不去採用系統的CA證書,這樣就不會被僞造的證書來騙取信息,天然而然,fiddler就沒辦法抓到這些自帶證書的軟件數據了。

而微信極有可能自帶https證書驗證,沒有使用因此fiddler沒辦法抓到微信內https網頁的信息。

 

而以前的微信是能夠正常抓取https的,今天卻忽然不行,想到前兩天微信剛剛升級到了7.0,會不會是新版新增的限制呢?

因而找來安卓6.7.3的微信進行驗證,發現時正常的,只有最新版7.0不行。

 

通過上面一系列的驗證,大概能夠猜想,是由於安卓的微信7.0版本值信任本身內置的ssl證書,不信任用戶本身安裝的證書,致使抓包工具抓取https頁面時,訪問空白!

 

解決方案:

在官方沒出來新的調試工具和方法以前,使用http或者低版本微信進行調試

 

-----------------------------------------

參考文章:

https://www.dadiaoge.com/fiddler-wechat-https.html

https://blog.csdn.net/u014145985/article/details/80997023

https://blog.csdn.net/qq_24033949/article/details/52891146

原文出處:https://www.cnblogs.com/saysmy/p/10240050.html

相關文章
相關標籤/搜索