HTTPS请求配置

更新时间:

本文将为您介绍在Java(异步)SDKHTTPS请求相关配置。

在使用 Java(异步)SDK 开发时,默认采用 HTTPS 协议访问阿里云服务。您可以通过 protocol 参数灵活选择所需的通信协议,支持的值包括HTTPHTTPS。为保障数据传输安全,建议始终优先使用HTTPS协议。

配置方式如下:

AsyncClient client = AsyncClient.builder()
        .credentialsProvider(credentialProvider) // 此处省略credentialProvider实现过程。
        .overrideConfiguration(
                ClientOverrideConfiguration.create()
                        .setEndpointOverride("<ENDPOINT>") // 云产品服务接入点。
                        .setProtocol("https") // 设置请求协议,默认https。
        )
        .build();

在使用HTTPS协议调用OpenAPI时,可以配置以下SSL/TLS相关参数以增强通信的安全性或适应特殊网络环境:

配置参数

说明

x509TrustManagers

配置自定义的CA证书信任管理器(X509TrustManager[]类型)。若不配置,则系统将默认仅使用系统信任库中的CA证书来校验服务端证书。适用于需要信任特定私有CA场景,例如内部系统或测试环境。

keyManagers

配置客户端密钥管理器(KeyManager[]类型)。通常用于双向TLS认证(即客户端证书认证)场景,即客户端也需要向服务端提供证书进行身份认证。

ignoreSSL

是否跳过SSL/TLS证书验证。其默认值为false,表示需要校验证书;如果设置为true,则会跳过证书验证步骤。

重要

为保障生产环境通信安全,建议该参数保持默认值。若为了在测试环境中快速调试或测试接口,可临时跳过证书校验。

hostnameVerifier

自定义HTTPS主机名验证规则。若不配置,系统会采用Java的默认验证逻辑,即验证服务器的主机名是否与证书中的域名匹配。用户可以根据实际需求实现自定义逻辑,以满足特定场景下的验证需求,例如在某些内部网络环境中,可能需要对主机名或特定IP地址进行特殊处理。

您可以根据实际业务场景选择性地配置上述参数,以增强通信的安全性或适应特殊网络环境。

重要

需要注意的是,任何对SSL/TLS验证的修改都可能影响通信的安全性,因此在生产环境中应谨慎使用。

示例代码如下:

HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
        // 使用HTTPS协议时,可配置SSL/TLS相关参数
        .x509TrustManagers(null) // 配置自定义的CA证书信任管理器,非必传。
        .keyManagers(null) // 配置客户端密钥管理器,非必传。
        .ignoreSSL(false) // 是否跳过证书检查,默认false,非必传。
        .hostnameVerifier(null) // 自定义HTTPS主机名验证规则,需自主实现javax.net.ssl.HostnameVerifier,非必传。
        .build();
        
AsyncClient client = AsyncClient.builder()
        .credentialsProvider(credentialProvider) // 此处省略credentialProvider实现过程。
        .httpClient(httpClient)
        .overrideConfiguration(
                ClientOverrideConfiguration.create()
                        .setEndpointOverride("<ENDPOINT>") // 云产品服务接入点。
                        .setProtocol("https")
        )
        .build();