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)等内容,以及(在本例中)客户端支持的密码套件列表。
服务器响应服务器问候消息包含各种元素,包括服务器证书、可选的客户端证书请求,以及重要的是从客户端先前提交的列表中选择的芯片套件。
在您的示例中,服务器是固定的,而客户端是变化的。因此,选择不同的密码套件取决于您的客户端的不同功能。