在伺服器上用Fiddler抓取HTTPS流量

來源:互聯網
上載者:User

標籤:

轉自:http://yoursunny.com/t/2011/FiddlerHTTPS/在伺服器上用Fiddler抓取HTTPS流量

陽光男孩 發表於2011-03-19

開發互連網應用的過程中,常常會設立或利用網路介面。為了調試對網路介面的使用,往往需要查看流入和流出網路介面的網路流量或資料包。“抓包工具”就是一類用於記錄通過網路介面的資料的工具。

我們知道,網路通訊協定是分層設計的,OSI模型將網路通訊協定分為了7個層次。不同的抓包工具,可以在網路通訊協定的不同層次上工作。常用的Wireshark就是一種在網路層上工作的抓包工具,不僅內建大量的協議分析器,而且可以通過編寫Wireshark外掛程式來識別自訂的協議。雖然Wireshark功能強大,但是卻並不能解決所有的抓包問題,其原因在於:

  • Wireshark工作在網路層;如果電腦配置了IPSec傳輸層加密,則在網路層的流量都已經被加密,什麼也看不到。
  • 當今大量網路介面使用HTTPS加密,Wireshark不能抓取到HTTPS流量的明文內容。

那麼,如何抓取到HTTPS請求的明文內容呢?使用Fiddler就可以辦到。

Fiddler是Eric Lawrence編寫的HTTP抓包軟體。Fiddler工作在應用程式層上,作為其他程式的HTTPProxy 伺服器。它可以直接抓取並分析HTTP流量,也可以作為“中間人”抓取並分析HTTPS流量。

Fiddler抓取HTTPS流量的原理

TLS是一種端到端的傳輸層加密協議,是HTTPS協議的一個組成部分。訪問HTTPS網站時,HTTP請求、響應都通過TLS協議在瀏覽器和服務 器之間加密傳輸,並且通過數位憑證技術保證資料的保密性和完整性;任何“中間人”、包括Proxy 伺服器都只能轉寄資料,而無法竊聽或者篡改資料。

要抓取HTTPS流量的明文內容,Fiddler必須解密HTTPS流量。但是,瀏覽器將會檢查數位憑證,並發現會話遭到竊聽。為了騙過瀏覽 器,Fiddler通過使用另一個數位憑證重新加密HTTPS流量。Fiddler被配置為解密HTTPS流量後,會自動產生一個名為 DO_NOT_TRUST_FiddlerRoot的CA認證,並使用該CA頒發每個網域名稱的TLS認證。若 DO_NOT_TRUST_FiddlerRoot認證被列入瀏覽器或其他軟體的信任CA名單內,則瀏覽器或其他軟體就會認為HTTPS會話是可信任的、 而不會再彈出“認證錯誤”警告。

開啟HTTPS流量解密功能後,Fiddler將會提示使用者將DO_NOT_TRUST_FiddlerRoot認證列入IE瀏覽器的信任CA名 單。用於調試用戶端時,這已經足夠了;Firefox使用者也可以很方便的手動匯入DO_NOT_TRUST_FiddlerRoot認證。但是,若要在服 務器上抓取ASP.Net發出的HTTPS請求,這是不夠的——你必須將DO_NOT_TRUST_FiddlerRoot認證匯入“機器帳號”的信任 CA名單。

操作錄影

該錄影示範了下列操作:

  1. 開啟Fiddler的HTTPS流量解密功能
  2. 將DO_NOT_TRUST_FiddlerRoot認證匯入“機器帳號”的信任CA名單
  3. 將PHP指令碼的Proxy 伺服器設定為127.0.0.1:8888,並抓取HTTPS請求
主要網路開發架構的抓包配置

Fiddler的工作方式是Proxy 伺服器(連接埠號碼8888)。只要開發架構支援設定HTTPProxy 伺服器,都可以使用Fiddler。

#PHP curl$ch=curl_init(‘https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.min.js‘);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_PROXY,‘127.0.0.1:8888‘);//設定Proxy 伺服器curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);//若PHP編譯時間不帶openssl則需要此行$resp=curl_exec($ch);curl_close($ch);
<!-- ASP.Net web.config --><configuration>  <system.net>    <defaultProxy enabled="false">      <proxy proxyaddress="http://127.0.0.1:8888/"/>    </defaultProxy>  </system.net></configuration>

如果你使用linux伺服器,請將Fiddler安裝在一台Windows電腦上並在Tools - Fiddler Options - Connections勾選Allow remote computers to connect,並手動將FiddlerRoot.cer匯入linux伺服器的信任CA名單,最後將Proxy 伺服器設定成Fiddler所在IP的8888 連接埠。

在伺服器上用Fiddler抓取HTTPS流量

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.