我正在开发需要与网站服务器建立连接的.NET 4.0应用程序。我一直在周期性地打开和关闭以下错误(模式似乎在午餐时间开始并且在群集中发生)“底层连接已关闭。发送时发生意外错误。” 我所看到的与该错误有关的所有内容都将我引向TLS错误。 我使用SSLLabs来确定远程服务器正在使用TLS 1.1和TLS 1.2,但是没有几个可用的密码。 我怀疑应用程序正在创建的连接有时会尝试使用不受支持的密码,并且会遇到此错误。
由于生产环境的敏感性以及该错误的时间安排是半随机的,因此我无法在服务器上运行Wireshark或Fiddler测试来确定故障期间使用的密码。我已经验证了该应用程序是否使用TLS 1.2。
是否可以通过编程方式从应用程序访问 HttpWebRequest对象正在使用的密码,还是可以从应用程序中指定 使用哪种密码?
答案 0 :(得分:0)
几个月前,我遇到了类似的问题,我记得在某处读过,密码套件的协商是由操作系统(对于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