У меня есть java-клиент, который подключается к серверу HTTPS (также сервер, написанный на Java). Вот настройка HttpClient в клиенте:
SSLContext ctx = SSLContext.getInstance("TLSv1.2");
keyManagers = ...; // Created from a PKIX KeyManagerFactory
trustManagers = ...; // Created from a PKIX TrustManagerFactory
ctx.init(keyManagers, trustManagers, new SecureRandom());
SSLContext.setDefault(ctx);
RequestConfig defaultRequestConfig = RequestConfig.custom()//
.setSocketTimeout(5000)//
.setConnectTimeout(5000)//
.setConnectionRequestTimeout(5000)//
.build();
httpClient = HttpClients.custom()//
.setSSLContext(ctx)//
.setDefaultRequestConfig(defaultRequestConfig)//
.setSSLHostnameVerifier(new NoopHostnameVerifier())//
.build();
Сертификат клиента и доверенные сертификаты хранятся в маркере PKI. Клиент постоянно отправляет некоторые HTTP-запросы на сервер. Все работает нормально. Теперь я хочу заставить клиента (или сервер) перезапустить рукопожатие. Другими словами, я хочу обновить SSL-соединение, которое периодически проверяет сертификат сервера. Есть какой-либо способ сделать это?
Я знаю о SSLSessionContext.setSessionTimeout()
. Но это не обновит текущие соединения. Это заставит только новые соединения снова выполнить рукопожатие.