openssl s_client、GnuTLS、sslscan 对所支持的密码存在分歧

openssl s_client、GnuTLS、sslscan 对所支持的密码存在分歧

OpenSSL说给定网络服务器的密码套件是 ECDHE-RSA-AES128-SHA256:

$ openssl s_client -connect 10.87.0.51:12656 </dev/null | grep Cipher
depth=0 C = VE, ST = xxxx, L = xxxxx, O = xxxxx, CN = xxxx.xxx.xx, emailAddress = [email protected]
verify error:num=18:self signed certificate
verify return:1
depth=0 C = VE, ST = xxxxx, L = xxxxx, O = xxxxx, CN = xxxxxx.xx.xx, emailAddress = [email protected]
verify return:1
DONE
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-SHA256
    Cipher    : ECDHE-RSA-AES128-SHA256

加密传输协议据我所知同意(不确定如何解释 AES CBC 部分,因为它使用了不同的命名法)

$ gnutls-cli --no-ca-verification -p 12656 10.87.0.51 < /dev/null | sed -n '/Description/,$p'
- Description: (TLS1.2)-(ECDHE-RSA-SECP256R1)-(AES-128-CBC)-(SHA1)
- Session ID: 5B:B6:66:65:8F:82:29:8B:5C:45:50:29:2F:6C:2D:7A:2C:C8:C0:EE:EB:CC:B7:79:19:1C:26:EA:97:CA:D6:A9
- Ephemeral EC Diffie-Hellman parameters
 - Using curve: SECP256R1
 - Curve size: 256 bits
- Version: TLS1.2
- Key Exchange: ECDHE-RSA
- Server Signature: RSA-SHA256
- Cipher: AES-128-CBC
- MAC: SHA1
- Compression: NULL
- Options: safe renegotiation,
- Handshake was completed

- Simple Client Mode:

SSL扫描/OpenSSL说测试时失败了:

$ sslscan 10.87.0.51:12656 | grep -e Accepted -e ECDHE-RSA-AES128-SHA256
    Failed    TLSv1  128 bits  ECDHE-RSA-AES128-SHA256
    Accepted  TLSv1  128 bits  ECDHE-RSA-AES128-SHA
    Accepted  TLSv1  128 bits  AES128-SHA
    Accepted  TLSv1  128 bits  ECDHE-RSA-RC4-SHA
    Accepted  TLSv1  128 bits  RC4-SHA
    Accepted  TLSv1  128 bits  RC4-MD5
    Accepted  TLSv1  112 bits  ECDHE-RSA-DES-CBC3-SHA
    Accepted  TLSv1  112 bits  DES-CBC3-SHA

我是不是错了,觉得这里存在矛盾?我对此完全陌生。

编辑:SSLscan 实际上不会为 ECDHE-RSA-AES128-SHA256 发送 Server Hello,而是连接 TCP 并断开连接两次,返回“SSL 例程 / ssl3_client_hello / 没有可用的密码”。我需要进一步深入研究 SSLscan。

答案1

在初始 TLS 握手期间,客户端发送客户端问候消息包含版本号、请求的压缩方法、扩展(如 SNI)等内容,以及(在本例中)客户端支持的密码套件列表。

服务器响应服务器问候消息包含各种元素,包括服务器证书、可选的客户端证书请求,以及重要的是从客户端先前提交的列表中选择的芯片套件。

在您的示例中,服务器是固定的,而客户端是变化的。因此,选择不同的密码套件取决于您的客户端的不同功能。

相关内容