当前位置: 首页 > 知识库问答 >
问题:

TLS版本:HttpClient仅在安全策略设置为TLS 1.1时工作

穆远
2023-03-14

我有一个windows窗体应用程序,它是通过单击一次来部署的。该应用程序是用。net 4.7.2,它使用HttpClient API访问托管在内部服务器上的两个rest web服务。正如您所料,这些服务只能通过HTTPS访问,并且服务器配置为支持所有TLS版本(顺便说一句,这是2016 windows服务器)。

intranet客户端应用程序(即windows forms应用程序)部署在多个内部子网络上,除了一台电脑(属于特定子网络——它是唯一一台使用此特定应用程序的电脑)外,其他一切都运行良好。只有将HttpClient配置为使用TLS 1.1时,此PC才能使用这些服务。

由于我们使用的是内部证书(我们的AD有一个内部证书颁发机构),我已经检查过了,带有实体公钥的证书已经存在于无法通过TLS 1.2建立安全会话的计算机的受信任证书颁发机构容器中。

电脑运行的是视窗10专业版(最新版本),所以它应该支持TLS 1.2。我尝试过模拟提琴手的请求,事实是只有当我配置它使用TLS 1.1时,我才能得到结果。

如果不将协议设置为TLS 1.1,我可以看到Fiddler说握手尚未建立,服务从未“执行”。

现在,根据我读到的,我不应该对代码有任何问题。事实上,我不必指定TLS版本(看起来Windows 10 Pro对TLS 1.2有现成的支持,这应该是Windows 10的默认版本。因为我使用的是.NET 4.7.2,它应该自动使用系统的默认协议),但事实是,只使用TLS 1.1(而不是TLS 1.2!)允许建立安全通道。

我试过在其他机器上运行代码,一切都如预期的那样(我可以用tls 1.1或tls 1.2建立安全通道,甚至让它使用系统的默认协议)。

既然我不是一个真正的网络人,有人能给我指出正确的方向吗?你们认为这可能是由防火墙引起的吗?有什么想法吗?

我的意思是,看起来PC可以识别HTTPS会话中使用的证书(如果不是这样,那么我就不能使用TLS 1.1了,对吧?),但似乎有些东西不允许我使用TLS 1.2。。。

谢谢路易斯

共有1个答案

庞修贤
2023-03-14

查看我们的TLS官方指南:https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls

如果是一个机器问题,我建议创建一个简单的HelloWorld应用程序来执行简单的请求,目标是相同的。NET框架(4.7.2),然后在特定的机器上与其他机器进行测试。这将肯定地告诉你问题是在你的应用程序中还是在机器/网络设置中。

 类似资料:
  • 问题内容: 如何在HttpClient上更改受支持的TLS版本? 我正在做: 但是当我检查创建的套接字时,它仍然说支持的协议是TLSv1.0,TLSv1.1和TLSv1.2。 实际上,我只希望它针对此特定HttpClient停止使用TLSv1.2。 问题答案: 解决方案是: 不过,这需要org.apache.httpcomponents.httpclient4.3.x。

  • 当 FreeMarker 运行在装有安全管理器的Java虚拟机中时, 你不得不再授与一些权限,确保运行良好。最值得注意的是, 你需要为对 freemarker.jar 的安全策略文件添加这些条目: grant codeBase "file:/path/to/freemarker.jar" { permission java.util.PropertyPermission "file.enco

  • 我们正在从WebSphere Liberty Profile(8.5.5.6)REST服务访问一个外部服务,该服务使用Apache HTTPClient 4.3.5连接到该服务。 该服务刚刚更改为使用TLS v1。现在我们的服务失败了:[4/21/16 12:23:37:596 EDT]000000 5D bm。myw3。服务。awf。sso。ejb。发电机SSOTokeneratorImpl I

  • 主要内容:命令配置密码,手动配置密码,指令安全,端口安全,SSH代理Redis 提供了诸多安全策略,比如为了保证数据安全,提供了设置密码的功能。Redis 密码设置主要有两种方式:一种是使用 命令来设置密码;另外一种则是手动修改 Redis 的配置文件。虽然看似前者更为简单,其实两种方式各有特点。本节将对它们进行介绍。 命令配置密码 通过执行以下命令查看是否设置了密码验证: 在默认情况下 requirepass 参数值为空的,表示无需通过密码验证就可以连接到 Re

  • 在这个世界上没有绝对的安全,我们说这台服务器安全并不是说它绝对不会有安全风险,不会受到损害。只能说明该台服务器的安全可信度高,不易受到侵害。相反,如果我们说这台服务器不安全,即可信度低,则这台服务器可能是一些服务的配置有安全漏洞或没有做数据冗余。每种环境、每种应用的可信度要求是有不同的,不能一概而论,如作为企业中心数据库服务器的可信度要求就比内部WEB服务器的可信度要求高。需投入更多的资金和时间对

  • PodSecurityPolicy 类型的对象能够控制,是否可以向 Pod 发送请求,该 Pod 能够影响被应用到 Pod 和容器的 SecurityContext。 查看 Pod 安全策略建议 获取更多信息。 什么是 Pod 安全策略? Pod 安全策略 是集群级别的资源,它能够控制 Pod 运行的行为,以及它具有访问什么的能力。 PodSecurityPolicy对象定义了一组条件,指示 Po