注意:对于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")
,但是没有类似的简便方法来配置密码套件。
答案 0 :(得分:1)
我最终的方法是包装底层SSLSocketFactory,并在返回之前调用SSL return
,就像这样:
sslSocket.setEnabledCipherSuites(..)
答案 1 :(得分:-3)
没有类似的简便方法来配置服务器接受的密码套件。
嗯,是的。 SSLServerSocket.setEnabledCipherSuites()
。为什么您不认为这种“轻松”是一个谜。