簡體   English   中英

.NET HttpListener / HttpWebRequest / HttpWebResponse和HTTPS

[英].NET HttpListener/HttpWebRequest/HttpWebResponse and HTTPS

我使用HttpListener和HttpWebRequest / Response制作了一個簡單的代理來編輯和記錄HTTP標頭。 一切都可以通過HTTP正常運行,但HTTPS卻是另外一回事,我在MSDN上已讀過,它說HttpListener和HttpWebRequest / Response可以通過HTTPS運行。 顯然,這是我做錯了。

我讓IE指向下面的前綴,我似乎無法捕獲請求。

string[] prefixes = new string[] { "http://127.0.0.11:8080/", "https://127.0.0.12:8081/" };

HttpListener listener = new HttpListener();
// Add the prefixes.
foreach (string s in prefixes)
{
    _listener.Prefixes.Add(s);
}

歡迎使用示例,我是新手! :)

不能像這樣代理https://。 HTTPS(如RFC2818所示 )使用SSL / TLS打開穿越代理的安全隧道。 作為代理,您將無權訪問HTTPS內容,因為它將只是一個不透明的二進制加密組。

您所期望的更像是SHTTP( RFC2660 ),基本上沒有人使用。

如果要查看源自計算機的HTTPS通信(例如,出於調試目的),則可以使用NetMon 但是,一個代理可以檢查從其他計算機通過的所有流量(如果從定義上說無法對HTTPS進行此操作),這意味着您剛剛成功獲得了中間人攻擊。

除了Cylon Cat所說的之外,還有FiddlerCore ,它是Fiddler代理,但是可以在您自己的應用程序中使用。 它支持HTTPS。

使用.NET框架實際上很容易做到。 如果您想做的是編寫一個中間人代理,例如fiddler。 然后,您可以使用SSLStream輕松完成此操作。 使用您的代理的客戶端將收到有關無效SSL證書的警告,但是您仍然可以代理流量並對其進行檢查。

這是一個功能強大的功能(包括緩存!)代理服務器,它執行https終止而不是隧道(中間人)。 CodeProject: http//www.codeproject.com/KB/IP/HTTPSDebuggingProxy.aspx

根據您要查找的內容,看一看fiddler ,它是Web調試廣泛使用的代理。 它確實處理HTTPS。

暫無
暫無

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

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