我正在开发一个需要连接到网站服务器的.NET 4.0应用程序。我一直在定期打开和关闭以下错误(模式似乎在午餐时间开始并在群集中发生)“基础连接已关闭。发送时发生意外错误。”我看到的与此错误相关的所有内容都指向了TLS错误。我使用SSLLabs来确定远程服务器正在使用TLS 1.1和TLS 1.2,但是没有几个密码可用。我怀疑应用程序创建的连接偶尔会尝试使用不受支持的密码,并且此错误正在被触发。
由于生产环境的敏感性和此错误时间的半随机性,我无法在服务器上运行wireshark或Fiddler测试以确定在故障期间使用的密码。不过,我已经使用TLS 1.2验证了应用程序IS。
有没有办法以编程方式从应用程序访问HttpWebRequest对象正在使用哪些密码,或者有没有办法从应用程序指定使用哪个密码?
几个月前我遇到了类似的问题,我记得在某个地方读过密码套件的协商是由操作系统完成的(在Windows的情况下是Schannel),我找不到从.NET内部控制它的方法。框架。
以下文章对我有所帮助,以便更好地理解围绕此的.NET框架行为(版本之间不同)。
Transport Layer Security (TLS) best practices with the .NET Framework
SCH_USE_STRONG_CRYPTO flag (which was relevant in my case)
编辑:
这篇文章(由Troy Starr [MSFT]提供)帮助我理解了我的问题:https://community.qualys.com/thread/16917-net-framework#comment-35829