1、简介
Apache HttpClient是一个底层、轻量级的客户端HTTP库,用于与HTTP服务器进行通信。
在本教程中,我们将学习如何在使用HttpClient时配置支持的传输层安全(TLS)版本。
我们将首先概述TLS版本协商如何在客户端和服务器之间工作。
之后,我们将看看在使用HttpClient时配置支持的TLS版本的三种不同方式。
2、TLS版本协商
TLS是一种互联网协议,可在两方之间提供安全、可信的通信。它封装了像HTTP这样的应用层协议。
TLS协议自1999年首次发布以来已多次修订。
因此,客户端和服务器在建立新连接时,首先就他们将使用的TLS版本达成一致非常重要。
TLS版本在客户端和服务器交换hello消息后达成一致:
- 客户端发送支持的 TLS 版本列表。
- 服务器选择一个并在响应中包含所选版本。
- 客户端和服务器使用所选版本继续连接设置。
由于存在降级攻击的风险,因此正确配置Web客户端支持的TLS版本非常重要。
请注意,为了使用最新版本的TLS(TLS 1.3),我们必须使用Java 11或更高版本。
3、固定设置TLS版本
3.1、SSLConnectionSocketFactory
让我们通过HttpClients#custom定制构建方法提供的HttpClientBuilder,来定制我们的HTTPClient配置。
此构建器模式允许我们传入我们自己的SSLConnectionSocketFactory,它将根据一组所需支持的TLS版本进行实例化:
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( SSLContexts.createDefault(), new String[] { "TLSv1.2", "TLSv1.3" }, null, SSLConnectionSocketFactory.getDefaultHostnameVerifier());CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();返回的Httpclient对象现在可以执行HTTP请求了。
通过在SSLConnectionSocketFactory构造函数中显式设置支持的协议,客户端将仅支持通过TLS 1.2或TLS 1.3的通信。
请注意,在 Apache HttpClient 4.3 之前的版本中,该类称为SSLSocketFactory。
3.2、Java运行时参数
另外,我们可以使用Java的https.protocols系统属性配置支持的TLS版本。
此方法可以防止必须将值硬编码到应用程序代码中。
相反,我们将配置HttpClient以在设置连接时使用该系统属性。
HttpClient API提供了两种方法来实现。第一个是通过HttpClients#createSystem:
CloseableHttpClient httpClient = HttpClients.createSystem();如果需要更多的客户端配置,我们可以使用builder方法代替:
CloseableHttpClient httpClient = HttpClients.custom().useSystemProperties().build();这两种方法都告诉HttpClient在连接配置期间使用系统属性。
这允许我们在应用程序运行时使用命令行参数设置所需的TLS版本。例如:
$ java -Dhttps.protocols=TLSv1.1,TLSv1.2,TLSv1.3 -jar webClient.jar4、动态设置TLS版本
还可以根据主机名和端口等连接详细信息设置TLS版本。我们将扩展SSLConnectionSocketFactory并覆盖prepareSocket方法。
客户端会在启动新连接之前调用prepareSocket方法,这将可以让我们在每个连接的基础上决定使用哪些TLS协议。
也可以启用对旧TLS版本的支持,但前提是远程主机具有特定的子域:
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(SSLContexts.createDefault()){ @Override protected void prepareSocket(SSLSocket socket) { String hostname = socket.getInetAddress().getHostName(); if (hos......原文转载:http://www.shaoqun.com/a/889705.html
跨境电商:https://www.ikjzd.com/
c2c模式:https://www.ikjzd.com/w/1576
韩蓬:https://www.ikjzd.com/w/1635
prezi:https://www.ikjzd.com/w/1751
1、简介ApacheHttpClient是一个底层、轻量级的客户端HTTP库,用于与HTTP服务器进行通信。在本教程中,我们将学习如何在使用HttpClient时配置支持的传输层安全(TLS)版本。我们将首先概述TLS版本协商如何在客户端和服务器之间工作。之后,我们将看看在使用HttpClient时配置支持的TLS版本的三种不同方式。2、TLS版本协商TLS是一种互联网协议,可在两方之间提供安全、
刘军:https://www.ikjzd.com/w/1835
塔图:https://www.ikjzd.com/w/2274
跨境通:https://www.ikjzd.com/w/1329
四川助力文旅企业复工复产 出台"金融+文旅"帮扶措施:http://www.30bags.com/a/434409.html
四川资阳市:加强文旅品牌创建营销 不断提升城市影响力:http://www.30bags.com/a/426966.html
四川资阳市:开辟"非遗+扶贫"融合发展之路:http://www.30bags.com/a/434683.html
四川自贡大安力争两年创成国家全域旅游示范区:实施"旅游+"战略 建设一批智慧旅游景区:http://www.30bags.com/a/248493.html
情感故事:怀念和他夜夜偷情的日子(11/50):http://lady.shaoqun.com/m/a/39667.html
深圳欢乐港湾儿童乐园山坡不锈钢滑梯游玩须知:http://www.30bags.com/a/514861.html
在这个时代,只有认真的性和爱,才配得上爱情的美好期待:http://lady.shaoqun.com/a/426302.html
一名47岁的海南男子醉醺醺地回家,在路边强行与一名65岁的失明老奶奶发生关系。被发现后,他还用弹弓枪殴打受害者的儿子:http://lady.shaoqun.com/a/426304.html
中学生手淫的危害有多大?掌握了这个就能克服!:http://lady.shaoqun.com/a/426305.html
没有评论:
发表评论