无法在Windows Server 2008 R2上创建SSL / TLS安全通道

时间:2016-10-29 11:42:52

标签: ssl-certificate windows-server-2008-r2

ve faced with very strange issue that i挣扎了2天。我尝试在几台开发机器上运行下面的代码并且它运行成功。但是,当我尝试在带有Windows Server 2008 R2的生产服务器上运行它时,它失败并显示消息:

  

无法创建SSL / TLS安全通道

以下是代码示例:

try
        {
            Console.WriteLine(ServicePointManager.SecurityProtocol);
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls |
                                                   SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.ServerCertificateValidationCallback +=
                (sender, certificate, chain, sslPolicyErrors) => true; // ignoring certificate errors
            Console.WriteLine(ServicePointManager.SecurityProtocol);
            using (var client = new WebClient())
            {
                client.DownloadString("https://smlegacygateway-integration.mysmartmove.com/LandlordApi/v1/ServerTime");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Something goes wrong");
            Console.Write(ex);
        }

        Console.WriteLine("Everything is fine.");
        Console.ReadLine();

你能不能帮我解决为什么只在Windows Server 2008 R2上失败?我试图在Windows Server 2012上运行它 - 一切都很好。

P.S。我使用Admin权限运行此控制台应用程序,因此它不应与任何权限差异相关 提前谢谢。

1 个答案:

答案 0 :(得分:0)

老实说,我不知道为什么。我认为这可能是因为Windows 2012支持Windows 2008没有的新加密算法。

根据this ssl test服务器仅支持TSL 1.2和TSL 1.1,并且只选择了几个密码套件。所有通过的握手测试都是通过使用TSL 1.2来完成的,所以我会在ServicePointManager.SecurityProtocol中使用这个协议。

可以在CAPI2事件日志中找到Windows 2008中连接失败的原因。您必须先启用它,然后再次尝试连接到服务器(smlegacygateway-integration.mysmartmove.com)。 CAPI2 event log

哦,最后的建议。请不要这样做:

ServicePointManager.ServerCertificateValidationCallback +=
                (sender, certificate, chain, sslPolicyErrors) => true; // ignoring certificate errors

如果必须实施证书验证,请执行它。回归永远不是一个好的选择。如果您不需要覆盖它,请不要触摸它:)