C#https连接问题
问题描述:
我使用VSTS 2008 + C#+ .Net 3.5开发Silverlight 3应用程序,我需要访问另一个Web服务器上的某个https地址(除了提供Silverlight应用程序的服务器之外)。C#https连接问题
这是我的代码,它与.Net 3.5控制台应用程序一起工作,但是在使用Silverlight时,我找不到像ServicePointManager这样的类。任何有关如何在Silverlight中实现相同功能的建议(接受来自服务器的所有证书)。
public static void SetBypassSslCertificateValidation()
{
ServicePointManager.ServerCertificateValidationCallback
+= new RemoteCertificateValidationCallback(BypassSslCertificateValidation);
}
private static bool BypassSslCertificateValidation(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
{
return true;
}
答
由于使用了BHWR(浏览器网络堆栈),Silverlight将Web服务和其他内容的信任决策留在Web浏览器中。
因此,您无法绕过使用Silverlight中的任何API进行证书验证。
如果您正在使用它进行测试,您可能可以调查Web浏览器的特殊配置选项或安全/区域设置。
如果您愿意接受任意的错误证书,那么使用HTTPS确实没有意义,因为任何坏人都可以使用MITM连接。 为什么目标服务器使用错误的证书? – EricLaw 2009-08-29 18:11:06