Как включить TLSv1.3 для OkHttp 3.12.x на Android 8/9? - PullRequest
2 голосов
/ 05 апреля 2019

Я использую OkHttp 3.12.2 на Android 9 (устройство Pixel 2) и пытаюсь подключиться к nginx 1.14.0, работающему с OpenSSL 1.1.1.Nginx поддерживает TLSv1.3, я проверил это с Firefox 66.0.2 на Ubuntu 18.04, Chrome 73.0 на Android 9 и ChromeOS 72.0.

Однако OkHttp всегда согласовывает TLSv1.2 ,Я также пытался установить RESTRICTED_TLS ConnectionSpec, но это не помогло.

Я не нашел конкретной инструкции о том, как заставить TLSv1.3 работать на Android.Я знаю, что только Android 8 и 9 поддерживают TLSv1.3 из коробки;Сейчас я в порядке с этим ограничением.

Мой опыт предыдущих миграций TLS заключается в том, что мне не нужно ничего делать, кроме обновления всех задействованных компонентов.

1 Ответ

1 голос
/ 06 апреля 2019

Вероятно, проблема заключается в том, что клиент или сертификат могут не поддерживать TLS 1.3 во всех ситуациях, а затем откатятся.Попробуйте проверить SSL test , чтобы убедиться в этом (он также выполняет проверки для мобильных клиентов, которые могут согласовываться по-разному).Обновление OhHttp до 3.13 или 3.14 (скоро) также может быть вариантом;вот журнал изменений .даже если Android должен поддерживать его, клиент также должен быть настроен:

OkHttpClient client = new OkHttpClient.Builder()
    .connectionSpecs(Arrays.asList(ConnectionSpec.MODERN_TLS))
    .build();

Возможные значения: RESTRICTED_TLS, MODERN_TLS и (в обратном направлении) COMPATIBLE_TLS.

...