【发布时间】:2014-06-23 09:26:11
【问题描述】:
我正在关注OpenSSL library for android
我的应用程序需要支持 TLS 1.2 版本(TLSv2)。我想知道上述库是否支持 TLS 1.2 及以上库是基于哪个 Openssl 版本构建的?
【问题讨论】:
我正在关注OpenSSL library for android
我的应用程序需要支持 TLS 1.2 版本(TLSv2)。我想知道上述库是否支持 TLS 1.2 及以上库是基于哪个 Openssl 版本构建的?
【问题讨论】:
根据代码,这只是 OpenSSL 1.0.0a。 TLS1.2 支持是随 OpenSS L1.0.1 添加的,因此该库不支持 TLS1.2。顺便说一句,TLS1.2 是 TLSv1_2 而不是 TLSv2。
【讨论】:
我正在使用以下适用于 android 的 OpenSSL 库
根据 Steffen 的说法,它是 dwonlevel 版本。您可以考虑自己构建它。您可以在 OpenSSL 的 wiki 上找到信息:OpenSSL and Android。
或者,您可以从这个 Github 获取 1.0.1h:Noloader GitHub。 GitHub 为 API 14(GCC 4.6 工具链)和 API 18(GCC 4.8 工具链)构建了 OpenSSL 1.0.1h。
OpenSSL 库是否支持 TLS 1.2 及更高版本的库是基于哪个 Openssl 版本构建的?
如果您使用的是现代版本的 OpenSSL,则默认情况下可以使用 TLS 1.2(除非在 Debian 和 Ubuntu 等发行版上,它在 2014 年左右之前禁用了 TLS 1.1 和 TLS 1.2)。如果发行版没有禁用协议,那么您应该执行以下操作来收紧协议:
/* Useless return value ??? */
SSL_library_init();
const SSL_METHOD* method = SSLv23_method();
if(!(NULL != method)) handleFailure();
SSL_CTX* ctx = SSL_CTX_new(method);
if(!(ctx != NULL)) handleFailure();
/* Cannot fail ??? */
const long flags = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_COMPRESSION;
SSL_CTX_set_options(ctx, flags);
上面的代码为您提供了 TLS 1.0 及更高版本。由于 TLS 无处不在(因此,不需要 SSLv3),因此您会很好地使用 TLS。该代码还将确保 TLS 1.3 在标准化后可用(IETF 现在正在对其进行标准化)。由于CRIME 等攻击,它会禁用压缩。
还有机会收紧密码套件。您应该提供 16 或 20 个左右已批准的密码,仅此而已。没有理由在 2014 年使用出口级密码、RC4 或 MD5。另外,如果您宣传所有 80 多种密码,它会导致一些设备像旧的 F5 和 IronPorts 一样崩溃。应用程序使用了一个太小的固定大小的缓冲区,它们在ClientHello 上阻塞/挂起。
【讨论】: