我们有一个下载的应用程序https://www.rba.gov.au/rss/rss-cb-exchange-rates.xml每天获取汇率。几天前它停止工作了,我们发现上面的 URL 在 IE 中无法打开,但在 Chrome 中可以打开。
我的理解是,使用 .NET 框架开发的应用程序肯定会在底层使用与 IE 相同的东西,因此它也无法下载文件。
以下是我使用 IE 访问网站时收到的错误,我确定所有 TLS 版本都已启用:
下面是我尝试通过 powershell/.net 下载文件时收到的错误:
然后我使用 ssllabs.com 测试了该网址,得到了以下结果。它说如果客户端是 IE11/Win 8,则会出现致命错误(我相信 Windows 2012 和 Windows 8 属于同一个系列,因此服务器 2012 也会发生致命错误)。
但我想我一定能做些什么,我可以更改一些设置来解决这个问题?我想避免将操作系统升级到服务器 2016 只是为了解决这个问题。非常感谢您的帮助。
答案1
澳大利亚储备银行选择仅支持具有强密码套件的 TLS 1.2 连接:
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
尽管带有 IE11 的 Windows 2012 R2 支持 TLS 1.2,但它不支持这些密码套件。
如果要避免升级到 Windows Server 2016/2019,可以使用一些第三方工具下载文件,例如Windows 版 curl(当前版本 7.69.1 附带 OpenSSL 1.1.1d)。
curl -o exchange-rates.xml "https://www.rba.gov.au/rss/rss-cb-exchange-rates.xml"
现在,您的.NET 应用程序可以使用 XML 文件的本地副本。