c# - 你怎么知道在 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
解决方案
感谢 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
推荐阅读
- angular - 角材料芯片激活芯片ngclass
- typescript - 类型'{商店:MockStoreEnhanced
; }' 不可分配给类型 'IntrinsicAttributes & Pick[...] - firebase - 使用 HUGO 框架在 Github Workflow for Firebase Web App 中需要 CI 和 CD 帮助
- c# - 如何绑定字典
到 Xamarin 表单中的 XAML - pip - 在 HPC 集群上安装“变压器”
- google-cloud-platform - 无法在 GCP 上启用 API(用户角色=所有者 && 结算帐户已关联)
- python - 如何将heroku中的django应用程序连接到mongodb atlas?
- powershell - 以与证书导入向导相同的方式添加证书 [Powershell]
- microsoft-graph-api - 无法在asp.net web api项目中获取刷新令牌,使用microsoft graph api
- ansible - awx-manage inventory_import --inventory-name --overwrite 不起作用