2010-12-22 68 views
11

我有一個使用HttpWebRequest撥打PHP網絡服務的C#windows應用程序(.Net 3.0 Framework)。HttpWebRequest.GetRequestStream()在Windows 7/Vista下通過SSL連接超時中斷

Win 7的& Vista的,如果呼叫是通過非SSL製造(即http://),代碼工作正常。當呼叫更改爲調用SSL(https :)版本的鏈接時,它會在HttpWebRequest.GetRequestStream()超時。每次都發生這種情況。

當這個相同的應用程序在Windows XP機器上運行時,它可以正常使用HTTP或HTTPS URL。

該代碼確實已接受所有服務器證書代碼。另外,我添加了System.Net logging。它寫出日誌,但由於數據包被加密,除了Timeout中止語句之外,您看不到太多內容。

我也嘗試過提琴手,但再次加密的數據包,我沒有看到太多。順便說一句,當我嘗試使用Fiddler2解密應用程序掛起,以至於沒有成功。

無論如何,任何幫助,將不勝感激。謝謝。

我要補充:

  • 我可以telnet到端口
  • 我試圖運行的應用程序作爲管理員
  • 我已經試過了Win XP的兼容模式(嘗試任何東西)
  • 我已將單個連接代碼單列到一個簡單的獨立應用程序中
+0

可以粘貼顯示在pastebin.com超時的logile? – feroze 2010-12-23 07:21:31

回答

9

在將正在訪問的網站遷移到新服務器並且表示服務器端問題後,在工作的C#應用​​程序中突然出現此錯誤。事實上,我們最終通過在Apache配置文件中設置「ServerName」值來匹配證書中註冊的域名來解決這個問題。 (另一個論壇上提到,設置「ServerAlias」也將工作)

更具體地講,對於SSL網站httpd.conf文件必須在虛擬主機部分如下:

ServerName www.secure.mydomain.com 

的證書註冊secure.mydomain.com,我們訪問的URL也是https://secure.mydomain.com/test.html

所以,簡單地改變conf文件以下內容並重新啓動Apache的的伎倆:

ServerName secure.mydomain.com 

下也會有合作,最有可能的:

ServerName www.secure.mydomain.com 
ServerAlias secure.mydomain.com 

下面是一些額外的背景資料,供將來參考:

我們在t中看到的兩個錯誤他系統。Net.trace.log是:

System.Net.Sockets Error: 0 : [4316] Exception in the 
    Socket#18796293::Receive - A blocking operation was 
    interrupted by a call to WSACancelBlockingCall 
System.Net Error: 0 : [4316] Exception in the 
    HttpWebRequest#35191196:: - The operation has timed out 

這裏都是我們試過這並沒有解決問題的東西:

  • 從SSL證書頒發者爲Apache的安裝中間證書(這是必需的)
  • 改變用戶代理在web請求(無效果)
  • 改變服務器端和客戶端超時和存儲器的限制(無效果)
  • 測試帶有靜態頁(無短跑運動員T)
  • 測試與其他https網站(它們工作得很好)
  • 添加證書到受信任的證書存儲區(無效果)
  • 購買和從不同的證書頒發者安裝證書(無效果)
  • 從已知的工作服務器的問題服務器比較虛擬主機conf文件(這使我們解決問題)

的HTTPS URL可能在Opera,IE8被打開,而Firefox沒有任何問題。針對Windows的WGET抱怨無效證書,但再次,WGET是一箇舊應用程序,似乎並不信任儘可能多的證書。

C#的客戶端應用程序在Windows XP下工作,但不是在Windows 7或Windows Vista。看起來Windows 7和Vista在驗證證書方面更積極。它在失敗時不提供信息錯誤消息,而只是在SSL握手期間超時。

0

也許SSL證書指的是一個需要t о長時間取回?

+0

您可以禁用CRL檢查。設置ServicePointManager.CheckCertificateRevocationList = false。另外,如果你使用wireshark,你可以看到超時是由於CRL還是其他原因。如果你發佈system.net登錄pastebin,我也可以看看。 – feroze 2011-01-02 13:10:25

+0

感謝您的反饋人。我很感激。 Shailesh(humbads)和我追蹤到服務器上的證書安裝問題。答案在上面。再次感謝! – 2011-01-04 17:59:50