2011-06-14 74 views
11

我有一個通過https連接到Web服務的客戶端應用程序。我需要「嗅探」web服務和客戶端之間的所有網絡流量,以檢查一切是否正常,即我必須調試連接。如何調試ssl連接?

我已經試過Wireshark,但由於我沒有服務器私鑰,所以顯示在wireshark屏幕上的數據當然是加密的。

當我無法訪問服務器本身以及私鑰和其他相關內容時,是否有辦法在我的客戶端和Web服務之間觀察到ssl網絡流量?

在此先感謝。

回答

4

看到這個:Debugging SSL communications

我知道理論上它可以做到 - 你可以設置一個與目標網絡服務通信的代理,指向你的應用程序通過這個代理進行連接。它的一個已知的限制--Https假定您信任您的機器上安裝的所有代理和證書。它的形式是Man-in-the-middle attack

看看Fiddler會有一定用處。

Man-in-the-middle attacks

在 中間人攻擊,攻擊者 攔截用戶流量捕獲 憑證和其他相關 信息。攻擊者然後使用此信息使用 訪問實際的 目標網絡。在 進程中,攻擊者通常將 作爲代理/網關提供給用戶一個虛假的SSL VPN站點;這 代理/網關通過任何 身份驗證用戶輸入到 真正的目標網站。

+0

HTTP代理將無法讓您看到它用於的HTTPS流量:它將所有內容直接轉發到目標服務器。 (雖然你可以看到服務器的地址和端口。) – Bruno 2011-06-14 13:56:16

+0

@Bruno,一個普通的HTTP代理不會,但你可以有一個代理來做到這一點。有企業監控工具就是這樣做的。它依賴於在您的計算機上添加可靠的證書,並且代理隱藏與HTTPS服務器的所有通信。 – YetAnotherUser 2011-06-14 14:01:57

+0

不,您不必信任HTTPS連接的HTTP代理以確保安全,只需要您計算機上的CA證書即可。一個HTTP代理不會攔截或修改一個HTTPS連接,它幾乎不轉發它,包括整個SSL/TLS交換(請參閱HTTP'CONNECT'方法)。 – Bruno 2011-06-14 14:03:53

0

如果您無法訪問服務器的私鑰,那麼可以通過SSL/TLS來保護哪些內容沒有多大用處。 (您至少會看到最初的握手。)

如果您對客戶端有完全的控制權,您可以編寫一個假的服務器,該服務器擁有您控制的私鑰和證書,並且可以將所有由客戶端發送到實際的服務器。爲此,您需要讓客戶信任您自己的證書,因此您需要控制客戶端。調整客戶端上相應的hosts文件也可能更容易執行DNS欺騙,以便將正確的主機名連接轉到您的假服務器。

4

你有沒有安裝python?

PIP安裝mitmproxy

mitmproxy -p 1234

甚至video爲您

(順便說一句,我不得不apt-get的一個APT-後Debian的擠壓安裝python-LXML獲取更新)

2

Burp Suite(甚至免費版)允許您設置一個SSL「代理」,它將爲您的應用程序提供一個不同的證書,它將爲您解密(並顯示)流量。如果你想用localhost中的服務器進行測試,它也允許你設置代理(我在Windows和Wireshark中無法做到的事情)和Fiddler。