2010-04-15 24 views
3

背景 - 我可以讓HttpListener正常工作以處理HTTP流量。但是,我遇到了HTTPS流量問題。.NET HttpListener - 在設置瀏覽器代理時收聽「https://*.8080」時沒有流量?

問題:如何更改下面的代碼,以便我的HttpListener實際提取到「https」URL的瀏覽器請求?

備註 - 目前,當我在端口8080(「https:// *:8080 /」)上監聽流量時,將firefox的代理設置設置爲「localhost:8080」,並且我輸入HTTPS url火狐,我沒有得到流量被拾起? (當我只想聽http和進入正常的HTTP URL的正常工作)

_httpListener = new HttpListener(); 
    _httpListener.Prefixes.Add("https://*:8080/"); 
    _httpListener.Start(); 

感謝

回答

5

MSDN

,如果您使用HTTPS ,你必須選擇一個服務器 證書對於聽衆的HttpListener。 否則,此HttpListener的HttpWebRequest查詢 將失敗,連接意外關閉 。

您可以使用 HttpCfg.exe配置服務器證書 和其他偵聽器選項。有關更多詳細信息,請參閱 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/http/http/httpcfg_exe.asp 。 Windows Server 2003附帶的可執行文件是 ,或者可以從平臺SDK中提供的源代碼 構建 。

不知道100%,但...

+0

有趣 - 我真的只想獲得請求,然後將其「複製」到新的請求(本身充當代理)。任何人都能確認/否認邁克爾的想法? – Greg 2010-04-15 00:30:10

+0

這不像在http中那麼簡單。您的客戶端(瀏覽器)將使用443端口建立與服務器的連接,然後檢索證書信息。請求將如下所示:CONNECT localorglobal.com:443 HTTP/1.0。然後,服務器將以HTTP/1.0 200響應建立連接,並在客戶端和服務器之間傳輸二進制加密數據。 – Pablo 2010-04-15 01:21:01

+0

Oh..ok..So可以單獨監聽端口443的HttpListener處理這個問題嗎?這似乎是你建立的聽衆需要知道如何處理證書等,或者HttpListener會爲你做這件事嗎?換句話說,.NET C#代碼中最簡單的方法是模擬web服務器通常處理SSL設置階段的過程。 – Greg 2010-04-15 01:27:17

0

聽起來像你期望的Firefox可能無法進行代理HTTPS流量。您的HTTPS請求是否實際在瀏覽器中呈現(即使您的HTTPListener中沒有流量顯示)?

確保您的Firefox瀏覽器設置爲將SSL代理服務器置於與HTTP相同的位置,否則請確保選中「爲所有服務器協議使用此代理服務器」框。

+0

實際上瀏覽器保持空白 - 我已經將firefox代理設置設置爲「對所有服務器協議使用此代理」 – Greg 2010-04-15 00:30:43

+0

好吧,那麼掛斷可能在聽衆身上,正如Michael所說的那樣。我以前遇到.NET代碼的證書問題;當你遇到證書問題時,它往往會默默地失敗,並讓你想知道發生了什麼。你肯定需要一個服務器端證書才能完成SSL。 – 2010-04-15 01:03:44

+0

好吧,只需要一個普通的服務器類型的SSL證書,那麼你在網站上的類型呢?你可以在XP上製作一個你知道嗎? (即不是Windows服務器) – Greg 2010-04-15 01:23:08

0

檢查FW設置,如果通過該端口在所有。

相關問題