2010-12-22 69 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