如何禁用 Java 的 SSL 会话恢复

How to disable Java's SSL session resumption

我需要测试我们的nginx新的SSL连接握手性能,所以我们需要在客户端或服务器端禁用ssl恢复功能。

在nginx端很容易实现,只需要关闭session cache和session ticket,但是每次要测试产品性能时,我都必须禁用该功能,这很烦人。

所以另一种方法是在客户端禁用会话恢复,我们的基准程序是由Java编写的。我们发现合适的方法是 SSLContext 的 setSessionCacheSize 和 setSessionTimeout 函数,但是如果将值设置为 0,然后我发现所有的 ssl 连接都被重用,所以我必须将它设置为 1,这导致 90% 的连接恢复在我的测试。

所以我的问题是如何在与服务器建立 SSL 连接时禁用 Java JDK 8 中的 ssl 会话恢复。

  1. 从套接字中获取 SSLSession
  2. 呼叫SSLSession.invalidate().