在将正在访问的网站迁移到新服务器并且表示服务器端问题后,在工作的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