Внедрение TLS 1.2 на Android 2.3.3

Я пытаюсь реализовать TLS 1.2 на Android. Я создаю SSLSocket s, но когда я запускаю s.getSupportedProtocols(), TLS 1.2 не является одним из вариантов. TLSv1 и SSLv3 поддерживаются, но TLSv1.2 не является.

В связи с этим вопросом, циферсуит мне тоже не нужен (TLS_ECDHE_ECDSA_WITH_AES_256 _...)

Любая идея о том, что я могу импортировать или делать, чтобы включить TLSv1.2 и этот шифр на Android? Есть что-то, чего я не хватает? Любые идеи были бы полезны! Спасибо!

Ответы

Ответ 1

Только для целей документации (этот вопрос составляет 3,5 года). Документация API Android содержит список поддерживаемых протоколов SSL/TLS для каждого уровня API, включая специальные классы шифрования: https://developer.android.com/reference/javax/net/ssl/SSLSocket.html

Ответ 2

Вы не можете включить его, если его там нет. Чтобы добавить поддержку TLSv1.2, вам нужно либо добавить новый JSSE-провайдер (не тривиальный), либо если вам нужен только сокет, возможно, реализовать это в собственном коде с использованием OpenSSL. Или просто используйте JB, если сможете.

Ответ 3

Если вы все еще придерживаетесь 2.3, лучшим вариантом будет создание (или использование) порта OpenSSL для Android с использованием NDK. OpenSSL имеет параметры настройки для Android. Используя NDK, вы можете создавать либо статически связанные библиотеки, либо динамически связанные. Затем используйте JNI и настройте сеанс TLS 1.2. Даже если вы используете JB, вам нужно сначала включить TLS 1.2. Весь комплект шифров не указан, поэтому существует вероятность того, что он все еще недоступен в JB, например, _GCM.

В этой таблице показано, какие комплекты шифров поддерживаются с помощью уровня API.

Эта ссылка fooobar.com/info/368161/... также содержит информацию о создании openssl для использования на Android.