【发布时间】:2018-12-18 18:53:27
【问题描述】:
注意:对于 Java HTTPS 客户端,这个问题已经被问过无数次了;我的问题是关于配置服务器。
我正在尝试使用 MockWebServer 来测试我的 OkHttpClient 配置。我的代码命中的真正 Web 服务器刚刚放弃了 TLS v1.0 支持,因此我将代码更改为使用 TLS v1.2 并使用服务器的首选密码套件。我想使用模拟真实服务器的内存中 Web 服务器来测试此更改,但我无法弄清楚如何在我的测试中使用特定的密码套件列表配置 SSLContext。 (我需要访问的所有方法都在 SSLContextImpl 及其内部类中得到了很好的保护。)
我能想到的最好的方法是完全包装一个 SSLServerSocketFactory,覆盖 4 个 createServerSocket() 方法,并在返回之前在 SSLServerSocket 上调用 setEnabledCipherSuites(),类似于这个答案对 SSLSocketFactoryEx 所做的客户:https://stackoverflow.com/a/23365536/278800
令人沮丧的是,使用特定的 TLS 版本就像调用 e.g. SSLContext.getInstance("TLSv1.2"),但没有类似的简单方法来配置密码套件。
【问题讨论】: