相关疑难解决方法(0)

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

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;
}
Run Code Online (Sandbox Code Playgroud)

问题是服务器永远不会验证证书并因上述错误而失败.有谁知道我该怎么办?


我应该提到一位同事和我几周前进行了测试,并且它与我上面写的内容类似.我们发现的唯一"主要差异"是我使用的是Windows 7并且他使用的是Windows XP.这有什么改变吗?

c# asp.net httpwebrequest windows-7 windows-8

349
推荐指数
29
解决办法
63万
查看次数

"无法创建SSL/TLS安全通道",即使SCHANNEL报告"SSL服务器握手已成功完成".

我正在从单元测试中追踪臭名昭着的"SSL异常" - 在ReSharper下运行测试,从我帐户下的控制台运行nunit,以及在构建服务器集成测试中生成相同的异常.在本地,代码是从安装了.NET 4.5.1的Windows 7计算机运行的.

System.Net.WebException:请求已中止:无法创建SSL/TLS安全通道.

我相当肯定它与证书并不严格相关,尽管它们最近已经更新.(失败的确切时间是接近但不明确的 - 另一方面,这不同环境中最有可能发生的相关变化.)

IIS设置为需要客户端证书,并且与Chrome相同端点的HTTPS连接为"绿色".如果我在Chrome中选择了无效的客户端证书,我会通过成功创建的HTTPS连接从IIS获取403消息.

问题:

  • 为什么(如何)"握手成功完成"后,安全SSL/TLS通道创建失败?

  • HTTP 403 Forbidden状态响应,以及可能的WebClient处理,这是一个因素吗?如果不是,则可以放弃该查询路径.

  • 调试问题的下一步是什么?在最初的谈判之后是否有某个可监控的事件表明成功(或失败)?


以下是在消除其他帖子中发现的问题时收集的内容:

  • 这是异常树的结尾; 有没有内部异常,这就是我"的远程证书根据验证程序是无效的" 期望在一个证书错误.

  • 启用S​​CHANNEL的"所有日志记录"后,服务器将显示

    一个SSL服务器握手成功完成.协商的加密参数如下.

    协议:TLS 1.0/CipherSuite:0x5 /交换强度:2048

  • 来自故障单元测试的SSL握手/协商在Wireshark上"看起来成功".(它与Chrome请求不同,并且有不同的协商CipherSuite.)

  • HTTP客户端超时为100秒,应该是默认值.


有点有趣,第一次失败的测试是ShouldCompleteSslHandshakeFor[InvalidClientCert].


更新:在查看本地计算机的事件查看器之后(不要问为什么我刚刚发生这种情况),对于失败的连接有相应的条目:

(SCHANNEL)尝试访问SSL客户端凭据私钥时发生致命错误.加密模块返回的错误代码是0x8009030d.内部错误状态为10003.

这肯定是握手失败后加密通道原因的有效原因.

.net https webclient

5
推荐指数
1
解决办法
6766
查看次数

标签 统计

.net ×1

asp.net ×1

c# ×1

https ×1

httpwebrequest ×1

webclient ×1

windows-7 ×1

windows-8 ×1