注意:有关Java HTTPS客户端的问题已经被问及多次。我的问题是关于配置服务器的。
我正在尝试使用MockWebServer测试我的OkHttpClient配置。我的代码所连接的真实Web服务器已经停用了TLS v1.0支持,因此我正在更改我的代码以使用TLS v1.2并使用服务器首选的密码套件。我想使用模拟真实服务器的内存Web服务器来测试这个更改,但我无法在我的测试中配置一个带有特定密码套件列表的SSLContext。(我需要访问的所有方法都嵌套在SSLContextImpl及其内部类中并且都有很好的保护。)
我能够找到的最好解决方案就是完全包装一个SSLServerSocketFactory,并覆盖4个createServerSocket()方法,在返回之前在SSLServerSocket上调用setEnabledCipherSuites(),类似于此答案如何在客户端上使用SSLSocketFactoryEx:https://dev59.com/RnNA5IYBdhLWcg3wPbWe#23365536
令人沮丧的是,使用特定的TLS版本就像调用例如SSLContext.getInstance("TLSv1.2")
一样简单,但没有类似于它那样容易的方法来配置密码套件。