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

Lev*_*han 39 linux ssl openssl

例如,1.0.0o我的Linux系统上有OpenSSL版本,我想知道这个SSL/TLS版本支持哪些版本.

是否有shell命令来完成此任务?

小智 141

用这个

openssl ciphers -v | awk '{print $2}' | sort | uniq
Run Code Online (Sandbox Code Playgroud)

  • **这是错的.**`ciphers -v`中的第二列是密码组的_minimum_版本; 由于TLSv1.0和1.1不添加SSLv3中不存在的任何密码套件,因此在1.0.1和1.0.2中,即使支持1.0和1.1,也只列出`SSLv3`和`TLSv1.2`.在1.1.0中由于一个明显的错误1.0被列出,但1.1仍然没有.此外,1.0.0-2确实支持SSLv2但不将v2套件放在_default_密码字符串中,因此未列出; 这可以通过使用'ALL`来修复.(OTOH SSLv3和SSLv3都被破坏,不应该_used_.) (5认同)
  • PS:`sort|uniq` 可以替换为 `sort -u`,如果顺序无关紧要,或者您使用在 `for` 中具有自动排序功能的 GNU awk 4,awk 可以很容易地自行抑制重复。但这些都是 SO 的主题。 (2认同)

vai*_*gar 11

您无法通过命令行检查版本支持.最好的选择是检查OpenSSL更新日志.

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


Dai*_*523 11

这对我有用:

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

如果这是错误的,请告诉我。


dav*_*085 5

它很笨拙,但您可以从s_client或 的使用消息中获取此信息s_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
Run Code Online (Sandbox Code Playgroud)