列出特定 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 中仅列出 SSLv3
和 TLSv1.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_client
或 s_server
的使用消息中获得此信息,这些消息在编译时是 #if
ed 以匹配支持的协议版本。使用类似的东西
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 版本的主要内容,如果未能解决你的问题,请参考以下文章