首页 > 解决方案 > 你怎么知道在 Windows server 2008R2 上用于 TLS 1.2 的密码版本

问题描述

我被告知 https 端点支持以下密码:

TLS 1.2(服务器优先顺序的套件)

  • TLS1.2_ECDHE_RSA_AES_128_GCM_SHA256
  • TLS1.2_DHE_RSA_AES_256_GCM_SHA384
  • TLS1.2_DHE_RSA_AES_128_GCM_SHA256

我在 Windows Server 2008R2 上运行的 C# (.Net Framework 4.7.2) 中的 Windows 服务将尝试通过 HttpClient PostAsync 调用到达 https 端点。

如何判断 Win2008r2 上是否启用了任何密码以及将使用哪些密码?

我必须说的奇怪的事情是,在我的开发机器(Win10 x64)上,我可以毫无问题地到达 https 端点。我在 Win2008r2 服务器上设置了适当的防火墙例外。

我一直在关注这个问题,检查 Win2008r2 上的各种注册表项,并在我的代码库中尝试 ServicePointManager.SecurityProtocol(默认值、Tls12 等)的各种设置。

这是另一个尝试找出为什么我的 Win10 开发机器可以工作而 Win2008R2 不能工作的努力。
顺便说一句,这是我从 Win2008r2 服务器得到的错误:

无法建立连接,因为目标机器主动拒绝它 xxx.xxx.xx.xxx:443

标签: c#tls1.2

解决方案


感谢 Crowcoder 指出之前关于 .Net Tracing 的文章。我将这两个类包含在我的代码中,并且能够清楚地看到我正在使用的跟踪和 tls 版本:

System.Net 信息:0:[25532] ConnectStream#62696216::ConnectStream(Buffered -1 bytes.) System.Net 信息:0:[25532] 将 HttpWebRequest#36963566 与 ConnectStream#62696216 关联 System.Net 信息:0:[25532 ] 将 HttpWebRequest#36963566 与 HttpWebResponse#31071611 关联 System.Net 信息:0:[25532] ContentLength=-1 System.Net 信息:0:[25532] TlsStream#63566392::.ctor(host=xxx.yyyyzzz.com, # certs=0, checkCertificateRevocationList=False, sslProtocols=Default, Tls12 ) System.Net 信息:0:[25532] 将 HttpWebRequest#57416410 与 ConnectStream#24004906 关联 System.Net 信息:0:[25532] HttpWebRequest#57416410 - 请求:POST /导入分配 HTTP/1.1


推荐阅读