【问题标题】:List supported SSL/TLS versions for a specific OpenSSL build列出特定 OpenSSL 构建支持的 SSL/TLS 版本
【发布时间】:2015-02-10 08:50:14
【问题描述】:

例如,我的 Linux 系统上有 OpenSSL 版本 1.0.0o,我想知道此构建支持哪些 SSL/TLS 版本。

有没有一个shell命令来完成这个?

【问题讨论】:

    标签: linux ssl openssl


    【解决方案1】:

    使用这个

    openssl ciphers -v | awk '{print $2}' | sort | uniq
    

    【讨论】:

    • 这是错误的。ciphers -v 中的第二列是密码套件的最低 版本;由于 TLSv1.0 和 1.1 不添加 SSLv3 中不存在的任何密码套件,因此在 1.0.1 和 1.0.2 中仅列出 SSLv3TLSv1.2,即使支持 1.0 和 1.1。由于一个明显的错误,在 1.1.0 中列出了 1.0,但仍然没有列出 1.1。此外,1.0.0-2 确实支持 SSLv2,但不将 v2 套件放在 default 密码字符串中,因此未列出;这可以通过使用ALL 来解决。 (OTOH SSLv3 和 SSLv3 均已损坏,不应使用。)
    • PS:sort|uniq 可以替换为sort -u,如果顺序无关紧要,或者您使用在for 中具有自动排序功能的 GNU awk 4,awk 可以轻松地自行抑制重复项.但这些都是 SO 的主题。
    【解决方案2】:

    您无法通过命令行检查版本支持。最好的选择是检查OpenSSL changelog

    直到 1.0.0h 的 Openssl 版本支持 SSLv2、SSLv3 和 TLSv1.0。从 Openssl 1.0.1 开始,增加了对 TLSv1.1 和 TLSv1.2 的支持。

    【讨论】:

    • 1.0.1s 和 1.0.2g up(2016 年 3 月)默认情况下“禁用”SSLv2(从构建中省略),但 ./Configure 可以将其添加回来。 1.1.0 基础版(2016 年 8 月)完全删除了 SSLv2 的代码(无法重新添加)并默认禁用 SSLv3。
    • 您好@dave_thompson_085,我正在寻找提及您上述关于 SSLv3 的参考资料(发行说明或其他地方)。能否提供一份?
    • @MohammedRaqeeb:我没有在更新日志中看到它,但这并不奇怪,因为 2016-08 年是 POODLE 两年后,除了 Stack 上可能有一百个 Qs,每个安全- 世界上的相关网站一直在大声疾呼“不要使用 SSLv3!!!不要使用 SSLv3!!!”不停地。
    • @dave_thompson_085 是的,我同意。我有一位客户需要与他分享这些数据,因此我正在寻找对弃用版本的明确参考。
    【解决方案3】:

    这对我有用:

    openssl s_client -help 2>&1  > /dev/null | egrep "\-(ssl|tls)[^a-z]"
    

    如果有错误请告诉我。

    【讨论】:

      【解决方案4】:

      这很笨拙,但您可以从 s_clients_server 的使用消息中获得此信息,这些消息在编译时是 #ifed 以匹配支持的协议版本。使用类似的东西

       openssl s_client -help 2>&1 | awk '/-ssl[0-9]|-tls[0-9]/{print $1}' 
       # in older releases any unknown -option will work; in 1.1.0 must be exactly -help
      

      【讨论】:

        【解决方案5】:

        试试下面的命令:

        openssl ciphers
        

        这应该会生成您的 openssl 版本支持的所有密码的列表。

        要查看一组特定的密码(例如,仅 sslv3 密码),请尝试:

        openssl ciphers -ssl3
        

        请参阅https://www.openssl.org/docs/apps/ciphers.html 了解更多信息。

        【讨论】:

        • 我不是在谈论密码。我想为特定的 OpenSSL 构建获得支持的 SSL/TLS 版本。例如:对于 1.0.0o,支持 SSL3 和 TLS1。
        【解决方案6】:

        当您使用 s_client 运行 OPENSSL 命令时,这是输出。查看密码,如果密码为 NULL,则表示不支持该版本的 TLS。

        TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256
        Server public key is 2048 bit
        Secure Renegotiation IS supported
        Compression: NONE
        Expansion: NONE
        No ALPN negotiated
        SSL-Session:
            Protocol  : TLSv1
            Cipher    : ECDHE-RSA-AES256
            Session-ID: A84600002D4945DE6
            Session-ID-ctx:
            Master-Key:  
            Start Time: 15852343333860
            Timeout   : 2343 (sec)
            Verify return code: 0 (ok)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-12
          • 2017-10-22
          • 2016-12-23
          • 1970-01-01
          • 2018-08-23
          • 2018-09-22
          • 1970-01-01
          • 2016-05-21
          相关资源
          最近更新 更多