Java OkHttp 3.11和TLS 1.2支持

Java OkHttp 3.11和TLS 1.2支持,java,android,okhttp,tls1.2,okhttp3,Java,Android,Okhttp,Tls1.2,Okhttp3,Android 4.2中添加了对TLS v1.2的支持,但默认情况下没有启用。使用OkHttp 3.x,通过向OkHttp客户端提供一个 OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.setSocketFactory(new MySSLSocketFactory()); 在我的例子中,自定义套接字工厂设置启用的协议如下: private static final String[] TLS_PROTOCOLS = new

Android 4.2中添加了对TLS v1.2的支持,但默认情况下没有启用。使用OkHttp 3.x,通过向OkHttp客户端提供一个

OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setSocketFactory(new MySSLSocketFactory());
在我的例子中,自定义套接字工厂设置启用的协议如下:

private static final String[] TLS_PROTOCOLS = new String[]{ "TLSv1.1", "TLSv1.2" };

public MySSLSocketFactory(final KeyManager[] keyManagers, final TrustManager trustManager) throws KeyManagementException, NoSuchAlgorithmException {
  final SSLContext sslContext = SSLContext.getInstance(TLS);
  sslContext.init(keyManagers, new TrustManager[]{ trustManager }, null);
  // ...
}

// ...

private Socket enableTLSOnSocket(final Socket socket) {
  if (socket instanceof SSLSocket) {
    ((SSLSocket) socket).setEnabledProtocols(TLS_PROTOCOLS);
  }
  return socket;
}
在最新的OkHttp 3.11中,我们可以阅读

修复:如果TLSv1.2可用,请选择它。在某些较旧的平台上 有必要选择加入TLSv1.2

我试图检查相关的提交(可能),但我不确定它是否解决了与定制工厂相同的问题

因此,我的问题是:当OkHttp 3.11+用于在旧Android设备上保持TSL 1.2的使用时,删除自定义SSLSocketFactory是否安全?

我已经使用默认套接字工厂测试了最新(3.11)OkHttp版本

final SSLContext SSLContext=SSLContext.getInstance(TLS);
init(keyManagers,newtrustmanager[]{TrustManager},null);
sslContext.getSocketFactory()

不幸的是,尽管TLSv1.2是可用的,但它并不是首选。目前,我必须继续使用自己的SSLSocketFactory实现,其中包括TLSv1.2