java 客户端应用会话恢复
java client application session resumption
我正在使用 TLS 连接从 java 客户端应用程序向服务器发出大量调用。为了避免 TLS 握手开销,我想使用会话 ID 恢复会话,类似于 Web 浏览器所做的。我目前正在使用 HttpsURLConenction 对象建立每个请求。
这在 Java 中是如何实现的? API 我在找什么?
为了解决这个问题,我使用了 Apache 的 HttpClient API 而不是 HttpsURLConnection。我现在可以保留 SSL 上下文并进行多次调用,而无需进行完整的握手(例如客户端签名操作)。
SSLContext sslcontext = SSLContext.getInstance("TLSv1.2");
sslcontext.init(kmf.getKeyManagers(), tmf.getTrustManagers(),null);
sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1.2" }, null,
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
...
//called multiple times
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
Java 已经支持会话恢复 全部 。您无需在两端做任何事情。
我正在使用 TLS 连接从 java 客户端应用程序向服务器发出大量调用。为了避免 TLS 握手开销,我想使用会话 ID 恢复会话,类似于 Web 浏览器所做的。我目前正在使用 HttpsURLConenction 对象建立每个请求。
这在 Java 中是如何实现的? API 我在找什么?
为了解决这个问题,我使用了 Apache 的 HttpClient API 而不是 HttpsURLConnection。我现在可以保留 SSL 上下文并进行多次调用,而无需进行完整的握手(例如客户端签名操作)。
SSLContext sslcontext = SSLContext.getInstance("TLSv1.2");
sslcontext.init(kmf.getKeyManagers(), tmf.getTrustManagers(),null);
sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1.2" }, null,
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
...
//called multiple times
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
Java 已经支持会话恢复 全部 。您无需在两端做任何事情。