【问题标题】:OpenSSL for android适用于安卓的 OpenSSL
【发布时间】:2014-06-23 09:26:11
【问题描述】:

我正在关注OpenSSL library for android

我的应用程序需要支持 TLS 1.2 版本(TLSv2)。我想知道上述库是否支持 TLS 1.2 及以上库是基于哪个 Openssl 版本构建的?

【问题讨论】:

    标签: android ssl openssl


    【解决方案1】:

    根据代码,这只是 OpenSSL 1.0.0a。 TLS1.2 支持是随 OpenSS L1.0.1 添加的,因此该库不支持 TLS1.2。顺便说一句,TLS1.2 是 TLSv1_2 而不是 TLSv2。

    【讨论】:

      【解决方案2】:

      我正在使用以下适用于 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 上阻塞/挂起。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-28
        • 2013-04-11
        • 2022-12-10
        • 2012-06-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多