websocket 列出服务器支持的所有Openssl密码

ql3eal8s  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(121)

是否可以列出服务器支持的所有Openssl密码?

hs1ihplo

hs1ihplo1#

不可能向TLS服务器询问所有支持的密码。我们所能做的就是探测服务器以获取特定密码,并观察它是否报告服务器将支持该密码。使用openssl命令行,这意味着使用openssl s_client -no_tls1_3 -cipher ...探测TLS 1.2和更低的密码,使用openssl s_client -tls1_3 -ciphersuites ...探测TLS 1.3密码。
成功握手的示例:

$ openssl s_client -no_tls1_3 -cipher AES128-GCM-SHA256 -connect google.com:443
...
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : AES128-GCM-SHA256

对于失败的握手:

$ openssl s_client -no_tls1_3 -cipher AES128-SHA256 -connect google.com:443
...
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000

不过,这种方法有几个限制:

  • 只能探测所用openssl版本支持的密码,请参见openssl ciphers -V
  • 某些服务器可能会将特定密码限制为特定TLS协议版本,例如仅在TLS 1.0中使用较弱的密码。因此,在探测时,还必须在各个TLS协议版本之间进行迭代
  • 一些服务器仅在特定ECC曲线被宣布为客户端所支持时才限制密码
  • 某些服务器对同一IP地址上的不同域具有不同的配置

因此,对于成功的测试,可以确定该密码被支持。对于不成功的测试,不能完全确定该密码不被支持,因为它可能仅在特定的上下文中被支持。对于未测试的密码,不知道这些密码是否被支持。

相关问题