2011-09-12 45 views
1

環境:NetBeans的7.0.1,GlassFish的3.1如何嗅探SSL保護的Metro服務和WCF客戶端之間的通信?

我想嗅出一個WCF(.NET框架4)客戶端和地鐵(2.1.1)的Web服務之間的通信,然後檢查消息確保一切都是我想要的。 Web服務使用傳輸安全性(SSL)。我已經知道Fiddler,但我沒有使用它的任何成功;只有HTTPS瀏覽器流量可見。有沒有辦法設置Fiddler來捕獲我的服務之間的流量?有沒有其他方法?

UPDATE

我試圖啓動客戶端和服務器在不同機器上,然後使用Fiddler,但沒有成功。我嘗試使用Wireshark捕獲流量,但在本地主機上都沒有成功運行。如果我在不同的機器上嘗試過它們,我只能看到TCP服務之間的數據交換。

在localhost + Wireshark上,接口旁邊的數據包計數器保持不變,但是我多次撥打該服務。

UPDATE2

試圖建立對NetBeans的代理在選擇手動和編程,但沒有成功:

System.setProperty("http.proxyHost", "localhost"); 
System.setProperty("http.proxyPort", "8888"); 
System.setProperty("https.proxyHost", "localhost"); 
System.setProperty("https.proxyPort", "8888"); 

試圖與這些JVM選項啓動的GlassFish,但沒有: (:

<jvm-options>-Dhttp.proxyHost=localhost</jvm-options> 
<jvm-options>-Dhttp.proxyPort=8888</jvm-options> 
<jvm-options>-Dhttps.proxyHost=localhost</jvm-options> 
<jvm-options>-Dhttps.proxyPort=8888</jvm-options> 
+0

是提琴手也適用於服務。你如何配置系統使用Fiddler作爲代理,或者你如何配置WCF客戶端來使用它? –

+0

@Ladislav Mrnka我只是試圖通過信任提琴手根證書。我沒有設置其他任何東西。我需要在服務方面使用Fiddlers證書嗎? –

+0

將Fiddler配置爲IE中的代理,並且應該由客戶端自動使用。 –

回答

1

作爲Fiddler的替代品,如果您控制WCF客戶端,則可以啓用WCF Message Logging,它會將所有未加密的SOAP消息保存到跟蹤日誌中。可以在app.config文件中啓用日誌記錄,因此您甚至不必重新構建應用程序以啓用或禁用日誌記錄。

+0

謝謝!這個方法可行,但我只看到了請求消息。看到整個交易所 –

+1

我現在可以看到回覆,從配置中刪除了'maxSizeOfMessageToLog =「2000」',所以它是默認的'Int32.MaxValue'。 –

1

您可以設置地鐵轉儲SOAP消息,信息here。親自,我使用charles proxy觀看肥皂交易所。您使用「update2」中的系統屬性配置java代理,效果很好。

+0

查爾斯是一個偉大的工具,爲我工作得很好。 – philwb

0

我經常使用commview來監視本地環回適配器上的流量。當您的客戶端和服務都在同一臺計算機上時,允許進行流量捕獲的少數工具之一。

你可以在http://www.tamos.com/products/commview/下載試試看看它是否適合你。

1

使用http://portswigger.net/burp/ 它有一個代理服務器。該代理可用於查看http流量。它還可以通過即時生成自簽名證書來顯示SSL流量。您需要將生成的證書導入到jax-ws客戶端的java密鑰庫中。確保您已啓用「爲非代理感知客戶端支持隱形代理」

0

我已成功嘗試過的一種方法是確保使用SSLv2(與SSLv3相反),然後使用Wireshark,如the SSL page on the Wikishark Wiki ,但在Citrix support page "How to decrypt SSL and TLS traffic using Wireshark "上更好。這是通過給Wireshark服務器的SSL證書的私鑰來實現的,所以它可以解密對話。

要在您的方案中強制使用SSLv2,在您的服務器端JVM上設置-Dhttps.protocols=SSLv2Hello似乎就足夠了,但我一起搜索了這一點。 (例如,請參閱the Java 1.4.2 Troubleshooting page上的「爲什麼我會得到javax.net.ssl.SSLException」問題,以及https.protocols中的部分是JavaTM Secure Socket Extension (JSSE) Reference Guide。)我自己並沒有完成這部分工作,而且我似乎也無法在這一點上找到明確的文件。在我的情況下,當我解密.NET到.NET的SSL流量時,我認爲這是切換回SSLv2,Wireshark使得流量可讀。但是,this blog post表明我正在切換同時從Diffie-Hellman密碼到非DH密碼。)

相關問題