我目前正在处理连接到服务器以检索配置文件的代码。要求通过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证书通过名称匹配,则节点必须获取配置文件的新副本。