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

60
我在我的Linux系统上有OpenSSL版本为1.0.0o,我想知道这个版本支持哪些SSL/TLS版本。是否有一个shell命令可以实现这个功能?
6个回答

172

使用此功能

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

18
这是错误的。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套件放入默认的cipherstring中,因此不会列出;可以通过使用ALL来解决这个问题。(另一方面,SSLv2和SSLv3都已经被破解并且不应该被使用。) - dave_thompson_085
3
PS:如果顺序不重要或者使用GNU awk 4,它具有自动排序功能,那么awk可以轻松地自行消除重复项,此时sort|uniq可以被替换为sort -u。但是这些内容适合在SO上讨论。 - dave_thompson_085

21

你无法通过命令行检查版本支持情况。最好的选择是检查OpenSSL变更日志

Openssl版本1.0.0h及之前支持SSLv2、SSLv3和TLSv1.0。从Openssl 1.0.1开始,添加了对TLSv1.1和TLSv1.2的支持。


1.0.1s和1.0.2g以上版本(2016年3月)默认情况下“禁用”SSLv2(从构建中省略),但./Configure可以将其添加回来。1.1.0基础版以上(2016年8月)完全删除了SSLv2的代码(无法添加回来),并默认禁用SSLv3。 - dave_thompson_085
嗨@dave_thompson_085,我正在寻找一个提到你关于SSLv3的上述内容的参考资料(发布说明或其他地方)。你能提供一个吗? - Mohammed Raqeeb
@MohammedRaqeeb:我在更新日志中没有看到它,但这并不奇怪,因为2016年08月是POODLE事件两年后,除了Stack上可能有数百个相关问题外,全世界每个与安全相关的网站都在不停地警告“不要使用SSLv3!不要使用SSLv3!” - dave_thompson_085
@dave_thompson_085 是的,我同意。我有一个客户需要与他分享这些数据,因此一直在寻找一个明确的参考来说明版本的弃用情况。 - Mohammed Raqeeb

14

这对我有用:

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

如果这不正确,请告诉我。


5

虽然有些麻烦,但你可以从s_clients_server的使用消息中获取此信息,这些消息在编译时使用#if匹配支持的协议版本。使用类似以下的内容:

 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

3
请尝试以下命令:
openssl ciphers

这应该会生成您的openssl版本支持的所有密码列表。
要仅看到特定一组密码(例如仅sslv3密码),请尝试:
openssl ciphers -ssl3

更多信息请参见 https://www.openssl.org/docs/apps/ciphers.html


3
我不是在谈论密码..我想要得到特定的 OpenSSL 版本所支持的 SSL/TLS 版本。比如说,对于 1.0.0o 版本,支持 SSL3 和 TLS1。 - Leviathan

-2
当您使用s_client运行OPENSSL命令时,会得到以下输出。请查看Cipher,如果Cipher为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)

这个回答了一个不同的问题。 - reinierpost
是的,您需要一个本地Web服务器来执行测试,该服务器可能配置为不使用所有密码。因此,结果可能不正确。 - sekrett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接