Я пытаюсь сделать https-вызовы, используя (доработка 2.0, okhttp3). Я уже включил ssl-сертификат, и он отлично работает сOkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.sslSocketFactory(getSSLConfig());
, но он показывает sslSocketFactory(getSSLConfig()) как устаревший и предоставляет другой вариант
sslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager)
Я хотел обновить свой код и использовать новую опцию вместо устаревшего метода, который я искал в сети, но не смог найти подходящей ссылки. Если кто-нибудь может предоставить хорошую ссылку на эту проблему, это будет очень полезно
OkHttpClient.Builder sslSocketFactory устарел
comment
Возможный дубликат Теперь что SSLSocketFactory устарела на Android, как лучше всего обрабатывать аутентификацию клиентского сертификата?
- person Bajrang Hudda   schedule 18.07.2017
Ответы (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
Я получаю SSLHandshakeException: соединение закрыто узлом
- person IgorGanapolsky; 13.06.2018