OkHttpClient.Builder sslSocketFactory устарел

Я пытаюсь сделать https-вызовы, используя (доработка 2.0, okhttp3). Я уже включил ssl-сертификат, и он отлично работает с
OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.sslSocketFactory(getSSLConfig());
, но он показывает sslSocketFactory(getSSLConfig()) как устаревший и предоставляет другой вариант
sslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager)
Я хотел обновить свой код и использовать новую опцию вместо устаревшего метода, который я искал в сети, но не смог найти подходящей ссылки. Если кто-нибудь может предоставить хорошую ссылку на эту проблему, это будет очень полезно


person fasal shah    schedule 09.11.2016    source источник


Ответы (1)


Вам нужен действующий сертификат. Создайте доверенный OkHttpClient, который доверяет любому сертификату ssl. Попробуйте этот код:

TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init((KeyStore) null);
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));
}
X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, new TrustManager[] { trustManager }, null);
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient client = new OkHttpClient.Builder().sslSocketFactory(sslSocketFactory, trustManager);

больше информации здесь: Теперь, когда SSLSocketFactory устарела на Android, как лучше всего обрабатывать аутентификацию клиентского сертификата?

person oskarko    schedule 20.01.2017
comment
Я получаю SSLHandshakeException: соединение закрыто узлом - person IgorGanapolsky; 13.06.2018