在C#中执行SSL服务器验证

时间:2013-08-16 09:56:31

标签: c# .net ssl verification

我目前正在处理连接到服务器以检索配置文件的代码。要求通过HTTPS以安全的方式发生这种情况。我发现当前的实现并没有真正满足这个要求:

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("https://www.configserver.com/...");

if (ReloadGlobals.IgnoreSSLErrors) // always true
    httpWebRequest.AuthenticationLevel = AuthenticationLevel.None;

if (m_ReloadConfig.DontCheckSSLCert) // always true
    ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(OnCheckSSLCert);

httpWebesponse = (HttpWebResponse)httpWebRequest.GetResponse();

远程回调以这种方式实现:

private static bool OnCheckSSLCert(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    return true;
}

我真的不太了解HTTPS,但即便如此我也可以看到这没有多大意义,看起来像是一种解决方法。所以我需要找到一种方法以适当的方式实现它。

我很感谢每一条建议。

编辑: 部分要求:

  

确定配置服务器的地址和URL后,对等方必须形成与该IP地址的HTTPS连接。如果提供了配置服务器的可选URL,则证书必须与URL中的域名匹配,如[RFC2818]中所述;否则证书必须与[RFC2818]中描述的覆盖名称匹配。如果HTTPS证书通过名称匹配,则节点必须获取配置文件的新副本。

0 个答案:

没有答案