在Android 2.3.3上实现TLS 1.2

我一直在尝试在Android上实现TLS 1.2。 我创建了一个SSLSocket但是当我运行s.getSupportedProtocols()时,TLS 1.2不是其中一个选项。 支持TLSv1和SSLv3但不支持TLSv1.2。

关于那个问题,我需要的密码套件也不在那里(TLS_ECDHE_ECDSA_WITH_AES_256 _…)

关于我可以导入或做什么来启用TLSv1.2和android上的密码的任何想法? 有什么我想念的吗? 任何想法都会有所帮助! 谢谢!

仅用于文档目的(此问题为3。5年) – Android API文档包含每个API级别支持的SSL / TLS列表,包括特定的密码套件: https : //developer.android.com/reference/javax/net/ssl /SSLSocket.html

如果它不存在,你无法真正启用它。 要添加对TLSv1.2的支持,您需要添加一个新的JSSE提供程序 (不是简单的),或者如果您只需要一个套接字,可能需要使用OpenSSL在本机代码中实现它。 或者只是使用JB,如果可以的话。

如果您仍然坚持使用2.3,那么您最好的选择是使用NDK为Android创建(或使用)OpenSSL端口。 OpenSSL有Android的配置选项。 使用NDK,您可以构建静态链接库或动态链接库。 然后使用JNI并在那里设置您的TLS 1.2会话。 即使您使用JB,也必须首先启用TLS 1.2。 您的整个密码套件未列出,因此它可能在JB中仍然不可用,例如_GCM。

此表显示哪个API级别支持哪些密码套件。

此stackoverflow链接还包含有关构建openssl以在Android上使用的信息。