强制客户端或服务器重新启动SSL握手(或终止SSL会话)

时间:2019-03-04 17:16:38

标签: java ssl httpclient pki

我有一个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()。但这不会刷新当前连接。它将仅强制新的连接再次进行握手。

1 个答案:

答案 0 :(得分:0)

供将来的读者使用。

我在security.stackexchange.com上问了类似的问题,但没有关于编程的详细信息。我以为这个问题可能是安全问题。但是,现在该问题已从security.stackexchange.com迁移到stackoverflow.com,并为我提供了令人信服的答案。我建议参考:https://stackoverflow.com/a/55004572/5538979