当前位置:  开发笔记 > 前端 > 正文

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

如何解决《"无法创建SSL/TLS安全通道",即使SCHANNEL报告"SSL服务器握手已成功完成".》经验,为你挑选了1个好方法。

我正在从单元测试中追踪臭名昭着的"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.

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



1> Alex..:

确保访问客户端证书的进程可以访问证书的私钥.

带有证书插件的MMC控制台 - >右键单击指定的证书 - >所有任务 - >管理私钥.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有