You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Micronaut HttpClient设置最低TLS版本

如何为Micronaut HttpClient指定TLS版本?

你可以通过两种方式为io.micronaut.http.client.HttpClient指定TLS版本,以下是具体实现:

方式一:通过配置文件(推荐)

在application.yml或application.properties中配置,支持全局生效或针对特定命名客户端生效:

全局配置(所有HttpClient共用)

micronaut:
  http:
    client:
      ssl:
        enabled: true
        protocols:
          - TLSv1.2
          - TLSv1.3

针对特定命名客户端配置

如果项目中存在多个HttpClient实例,可以为指定客户端单独配置:

micronaut:
  http:
    clients:
      third-party-api-client: # 替换为你的客户端名称
        ssl:
          enabled: true
          protocols:
            - TLSv1.2

使用时需通过@Named("third-party-api-client")注入对应的HttpClient实例。

方式二:通过代码自定义HttpClient

如果需要更精细的SSL控制,可以通过工厂类自定义HttpClient实例:

import io.micronaut.http.client.HttpClient;
import io.micronaut.http.client.HttpClientConfiguration;
import io.micronaut.http.client.netty.DefaultHttpClient;
import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.Factory;
import io.netty.handler.ssl.SslContextBuilder;
import javax.net.ssl.SSLException;
import java.util.List;

@Factory
public class CustomHttpClientFactory {

    @Bean
    public HttpClient tlsConfiguredHttpClient() throws SSLException {
        HttpClientConfiguration config = new HttpClientConfiguration();
        // 直接指定允许的TLS协议版本
        config.getSslConfiguration().setProtocols(List.of("TLSv1.2", "TLSv1.3"));

        // 可选:自定义SSL上下文(比如指定证书、SSL提供者等)
        SslContextBuilder sslContextBuilder = SslContextBuilder.forClient()
                .protocols("TLSv1.2", "TLSv1.3");
        config.getSslConfiguration().setSslContext(sslContextBuilder.build());

        return new DefaultHttpClient(config);
    }
}

注意事项

  • 配置的协议版本需与第三方API支持的版本匹配,避免出现握手失败
  • 优先使用较新的TLS版本(如TLSv1.2、TLSv1.3),避免使用已废弃的TLSv1.0、TLSv1.1

内容的提问来源于stack exchange,提问作者Daisy Day

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:50:45