如何为Java HTTPS *服务器*配置SSL密码套件?

时间:2018-07-10 20:33:10

标签: java ssl okhttp

注意:对于Java HTTPS 客户端,已经多次询问了此问题;我的问题是关于配置服务器

我正在尝试使用MockWebServer测试我的OkHttpClient配置。我的代码访问的真正的Web服务器刚刚放弃了TLS v1.0支持,因此我将代码更改为使用TLS v1.2,并使用服务器的首选密码套件。我想使用模拟真实服务器的内存中Web服务器来测试此更改,但是我无法弄清楚如何在测试中使用特定的密码套件列表配置SSLContext。 (我需要访问的所有方法在SSLContextImpl及其内部类中都得到了很好的保护。)

我能找出的最好的办法是完全包装SSLServerSocketFactory,覆盖4个createServerSocket()方法,并在返回之前在setEnabledCipherSuites()上调用SSLServerSocket,类似于此答案在客户端上使用SSLSocketFactoryEx:https://stackoverflow.com/a/23365536/278800

令人沮丧的是,使用特定的TLS版本就像调用例如SSLContext.getInstance("TLSv1.2"),但是没有类似的简便方法来配置密码套件。

2 个答案:

答案 0 :(得分:1)

我最终的方法是包装底层SSLSocketFactory,并在返回之前调用SSL return,就像这样:

sslSocket.setEnabledCipherSuites(..)

答案 1 :(得分:-3)

  

没有类似的简便方法来配置服务器接受的密码套件。

嗯,是的。 SSLServerSocket.setEnabledCipherSuites()。为什么您不认为这种“轻松”是一个谜。