相关疑难解决方法(0)

重新加载 java.net.http.HttpClient 的 SSLContext

我有一个程序,java.net.http.HttpClient它利用 Java 11 中引入的 来连接内部服务并向内部服务发送请求。这些服务相互验证,均提供内部 CA 颁发的证书。

例如,

SSLContext sslContext = SSLContext.getInstance("TLSv1.3");
KeyManager keys = /* load our cert and key */;
TrustManager trust = /* load our trusted CA */;
sslContext.init(keys, trust, secureRandom);

HttpClient.Builder builder = HttpClient.newBuilder().sslContext(sslContext);
HttpClient client = builder.build();
Run Code Online (Sandbox Code Playgroud)

在我们的主机上,客户端的证书和私钥会定期轮换,比主机或应用程序有机会重新启动的频率更高。我希望能够在新的证书/密钥对仍在运行时重新加载它,但看不到任何方法可以做到这一点HttpClientSSLContext

构建完成后HttpClient,它仅提供一个sslContext()getter 来检索SSLContext. 似乎没有 API 来设置新的。

还有其他机制可以实现这一目标吗?

(我正在考虑类似于 Jetty 的SslContextFactory#reload(SSLContext)方法。)

java ssl mutual-authentication java-http-client

3
推荐指数
1
解决办法
6385
查看次数