Micronaut 的文档有限。
我们正在使用
io.micronaut.http.client.HttpClient
访问第三方 API。
我能找到的就是这个https://docs.micronaut.io/latest/guide/configurationreference.html但它没有给出示例。
我们如何指定准备与之交互的 TLS 版本?
要指定准备与 io.micronaut.http.client.HttpClient 交互的 TLS 版本,可以使用 HttpClientConfiguration 类的 sslContext 属性。
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Value;
import io.micronaut.http.client.HttpClientConfiguration;
import io.micronaut.http.client.HttpClientFactory;
import io.micronaut.http.client.annotation.Client;
import javax.inject.Singleton;
import javax.net.ssl.SSLContext;
import java.security.NoSuchAlgorithmException;
@Factory
public class MyHttpClientFactory {
@Value("${my.http.client.url}")
String url;
@Singleton
@Client("myClient")
HttpClientConfiguration myClientConfig(HttpClientFactory factory) throws NoSuchAlgorithmException {
HttpClientConfiguration clientConfig = factory.createConfiguration(url);
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(null, null, null);
clientConfig.setSslContext(sslContext);
return clientConfig;
}
}
在此代码中,我们创建一个名为 MyHttpClientFactory 的工厂类,它定义了 myClientConfig 方法。此方法创建一个新的 HttpClientConfiguration 实例并将其 sslContext 属性设置为使用 TLS 版本 1.2。
然后,您可以使用此工厂类创建 io.micronaut.http.client.HttpClient 的实例,准备使用 TLS 版本 1.2 与服务器进行交互。
可以通过properties/yml进行配置:
micronaut.ssl.protocols=TLSv1.2