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
,它将根据一组所需支持的