OkHttp 3.11およびTLS 1.2のサポート

LR89:

TLSバージョン1.2のサポートは、Android 4.2で追加されましたが、それはデフォルトで有効になっていませんでした。この問題は、提供することで、OkHttp 3.xではでは非常に簡単修正にしたカスタムのSSLSocketFactory実装を 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に必要です

私は、関連するコミット(おそらくチェックするためにしようとしていたこの1を)しかし、それはカスタム工場が行うように同じ問題に対処している場合、私はわかりません。

だから、私の質問は:OkHttp 3.11+が古いAndroidデバイス上でTSL 1.2の使用を維持するために使用されたときにカスタムのSSLSocketFactoryを削除することが安全ですか?

マルチンPaszylk:

私は、デフォルトのソケットファクトリと最新(3.11)OkHttpバージョンをテストしてみました

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

残念ながら、TLSv1.2は、それが利用可能であっても好ましいものではありません。今のところ、私はTLSv1.2が含まのSSLSocketFactoryの私の独自の実装を使用して維持する必要があります。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=213015&siteId=1