在將正在訪問的網站遷移到新服務器並且表示服務器端問題後,在工作的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握手期間超時。
可以粘貼顯示在pastebin.com超時的logile? – feroze 2010-12-23 07:21:31