列出特定 OpenSSL 构建支持的 SSL/TLS 版本

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于列出特定 OpenSSL 构建支持的 SSL/TLS 版本的主要内容,如果未能解决你的问题,请参考以下文章

如何列出OpenSSL信任的证书?

使用特定的openssl版本构建Qt

使用 OpenSsl 支持构建 Kivy-ios

在具有 OpenSSL 支持的 Windows 上构建 PyQt5?

列出具有特定扩展名的目录和文件数量,构建特定菜单

Openssl命令行用法简介