请求中止:无法创建SSL/TLS安全通道

716

由于以下错误信息,我们无法使用WebRequest连接到HTTPS服务器:

The request was aborted: Could not create SSL/TLS secure channel.

我们知道服务器在所使用的路径上没有有效的HTTPS证书,但为了绕过这个问题,我们使用从另一个StackOverflow帖子中获取的以下代码:

private void Somewhere() {
    ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AlwaysGoodCertificate);
}

private static bool AlwaysGoodCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) {
   return true;
}

问题在于服务器从未验证证书,因此出现上述错误。有人知道我该怎么做吗?


我应该提到,几周前我和一位同事进行了测试,并且使用类似我上面写的东西正常工作。我们发现唯一的“主要区别”是我使用的是Windows 7,而他使用的是Windows XP。这会改变什么吗?


4
也请查看这个链接 https://dev59.com/I3I-5IYBdhLWcg3w8dYQ - Oskar Kjellin
135
到了2018年,这个问题已经被查看了308,056次,但仍然没有适当的解决方法!!我会随机遇到这个问题,这里或其他线程提到的任何修复措施都不能解决我的问题。 - Nigel Fds
7
@NigelFds 错误The request was aborted: Could not create SSL/TLS secure channel是一个非常通用的错误。它基本上表示“由于许多可能的原因之一,SSL/TLS/HTTPS连接初始化失败”。因此,如果您在特定情况下经常遇到这个错误,最好的选择是提出一个具体的问题,并提供有关该情况的具体细节。同时,检查事件查看器以获取更多信息。另外,启用一些.NET客户端调试以获取更多详细信息(例如服务器证书是否不受信任?是否存在密码匹配问题?SSL/TLS协议版本不匹配等)。 - MarnixKlooster ReinstateMonica
6
@MarnixKlooster,我已经检查了所有内容,证书不可能是问题,因为如果我重试它,它就可以工作。我怀疑如果我在 SO 上提出这个问题,没有人会标记它为重复或其他什么。 - Nigel Fds
5
使用4.5.2几乎肯定是问题的主要原因。运行时确定安全协议的默认设置,而4.5.x只启用了SSL 3.0和TLS 1.0,这意味着如果您的应用程序调用了一个已禁用TLS 1.0的API,它将无法工作。尝试使用更高版本的.NET Framework,最好是4.7或更高版本。请参见我的答案获取更多详细信息,特别是如果您的应用程序是ASP.NET站点。 - JLRishe
显示剩余14条评论
51个回答

-1

从注册表中删除这个选项对我在Windows Server 2012上有帮助:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接