如何禁用Java的SSL会话恢复

问题描述:

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

它很容易在nginx端实现,就在会话缓存和会话票据的旁边,但是每次当我想测试产品的性能时,我都必须禁用令人讨厌的功能。

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

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

  1. 从插座获取SSLSession
  2. 致电SSLSession.invalidate()
+0

然后怎么用这个socket使用httpclient? –

+0

我不知道。我没有看到你的问题中提到了'HttpClient'。你以某种方式掌握了'SSLSessionContext':如果你可以这样做,你当然可以获得'SSLSocket'。 – EJP