簡體   English   中英

如何使用 Wireshark 解密從 C# HTTP 客戶端發送的 HTTPS 消息?

[英]How can I decrypt HTTPS messages sent from a C# HTTP Client using Wireshark?

我們有一個 .Net 4.6.1 服務,它使用 HttpWebRequest 向另一個 Web 服務發送 HTTPS 請求。 我們正在嘗試捕獲我們在此請求中遇到的問題,以便我們可以向外部服務的所有者發送數據日志。 我們有請求/響應的 Wireshark 跟蹤,但無法對其進行解密。 遠程服務是 Java,但這無關緊要。

我們發現這篇內容非常豐富的帖子,但它通過瀏覽器引用了 HTTP。 https://security.stackexchange.com/questions/35639/decrypting-tls-in-wireshark-when-using-dhe-rsa-ciphersuites/42350#42350

有沒有一種方法可以讓我們獲得系統上使用的私有 RSA 密鑰來解碼請求? 這不適用於描述 HTTPS 響應,對嗎? 生成 SSL 密鑰日志文件會解決這個問題嗎? 如果是這樣,我們可以修改我們的代碼來生成文件嗎? 其他解決方案? 謝謝

我想到了一個變通的解決方案,只要您的網絡基礎設施允許。

  1. 重新配置您的客戶端應用程序以通過 HTTP(而不是 HTTPS)調用遠程服務器
  2. 放置一個代理並將您的客戶端配置為通過代理發送。
  3. 配置代理以通過 HTTPS 轉發(並轉發到遠程服務器)
  4. 使用 Wireshark 捕獲客戶端和代理之間的請求。

您將同時擁有請求和響應。 請求應該或多或少是原始形式,響應可能會有幾個來自代理的額外標頭(如Via: ),但不應阻止您的故障排除。

打開應用程序的系統日志記錄可能會有所幫助。 您可以設置應用程序配置文件以打開它並寫入文件。 日志將是未加密的,它們將顯示請求/響應以及更多信息。

這是一個例子,將其命名為 [app name].exe.config 並將其放在與 .exe 相同的目錄中

<configuration>
    <system.diagnostics>
        <trace autoflush="true"/>
        <sources>
            <source name="System.Net" maxdatasize="10240">
                <listeners>
                    <add name="TraceFile"/>
                </listeners>
            </source>
            <source name="System.Net.Sockets" maxdatasize="10240">
                <listeners>
                    <add name="TraceFile"/>
                    <!-- 
                    Commented this out because it can cause the program to slow down when running from the command line and console output is enabled
                    <add name="consoleListener" type="System.Diagnostics.ConsoleTraceListener"/> 
                    -->
                </listeners>
            </source>
        </sources>
        <sharedListeners>
            <add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log"/>
        </sharedListeners>
        <switches>
            <add name="System.Net" value="Verbose"/>
            <add name="System.Net.Sockets" value="Verbose"/>
        </switches>
    </system.diagnostics>
</configuration>

您可能想要取消 System.Net 跟蹤並只記錄 System.Net.Sockets

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM