我正在运行一个.net 4.5应用程序,该应用程序向仅支持TLS 1.1和TLS 1.2的外部服务器发出安全出站请求。当我从Windows 8 / 8.1主机运行应用程序时,一切正常,但在Windows Server 2008上是失败了: “基础连接已关闭:发送时发生意外错误。”
我认为.net依赖于底层操作系统基础架构,并且由于Windows Server 2008不支持TLS 1.1和TLS 1.2,因此WebRequest也会失败。有人可以证实吗?有什么文件可以指向我吗?
代码示例:
var request = WebRequest.Create("https://SOMEURL");
using (var response = (HttpWebResponse) request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
// read the stream
}
}
我也在设置支持的协议:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
答案 0 :(得分:1)
因为Windows Server 2008不支持TLS 1.1和TLS 1.2,所以WebRequest也会失败。
是的,就是这种情况。
指向我的任何文件?
来自https://support.microsoft.com/en-us/kb/245030:
Windows Server 2008 supports the following protocols:
SSL 2.0
SSL 3.0
TLS 1.0
Windows Server 2008 R2 and Windows 7 support the following protocols:
SSL 2.0
SSL 3.0
TLS 1.0
TLS 1.1
TLS 1.2
答案 1 :(得分:0)
我找到了你的间接证明。
SecurityProtocolType Enumeration
指定Schannel安全包支持的安全协议。
Support for SSL/TLS protocols on Windows
现在让我们来看看,在Windows上,对SSL / TLS协议的支持与SCHANNEL组件相关联。因此,如果特定操作系统版本不支持SSL / TLS版本,则表示它仍然不受支持。