openssl s_client, GnuTLS, sslscan не согласны с поддерживаемыми шифрами

305
arielCo

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 = xxxx@xxxxx.com 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 = xxxx@xxxxx.com verify return:1 DONE New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-SHA256 Cipher : ECDHE-RSA-AES128-SHA256 

GnuTLS соглашается с AFAIK (не уверен в том, как интерпретировать часть 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: 

Но SSLscan / 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 на самом деле не отправляет сервер Hello для ECDHE-RSA-AES128-SHA256, но вместо этого дважды подключается по протоколу TCP и отключается, возвращая «Подпрограммы SSL / ssl3_client_hello / нет доступных шифров». Мне нужно копаться дальше в SSLscan.

1

1 ответ на вопрос

0
garethTheRed

Во время начального рукопожатия TLS клиент отправляет сообщение Client Hello, которое содержит, помимо прочего, номер версии, запрошенный метод сжатия, расширения (например, SNI) и, что важно, в этом случае список наборов шифров, которые поддерживает клиент.

Сервер отвечает сообщением Server Hello, которое содержит различные элементы, в том числе сертификат сервера, необязательный запрос сертификата клиента и, что важно, выбранный набор микросхем, выбранный из списка, ранее представленного клиентом.

В вашем примере сервер исправлен, а клиент изменился. Поэтому выбранный набор шифров зависит от возможностей ваших клиентов.

Даже с той же библиотекой и без дополнительной конфигурации с моей стороны? Завтра я запишу рукопожатия и поищу разницу в наборах, отправленных в Client Hello. arielCo 6 лет назад 0
Это лучший способ расследовать. OpenSSL и GnuTLS - это разные библиотеки. Является ли SSLScan статически связанным с другой библиотекой OpenSSL? Я только что попробовал OpenSSL и SSLScan и получил одинаковые шифры для обоих. garethTheRed 6 лет назад 0
Покопавшись немного глубже, кажется, что моя версия SSLScan использует OpenSSL 1.0.2l, в то время как `openssl version` показывает 1.1.0f. garethTheRed 6 лет назад 0
Mine both use the same .so (confirmed by `ldd`), but somehow `sslscan` doesn't send the Server Hello for ECDHE-RSA-AES128-SHA256. `openssl version` and `dpkg -l libssl1.0.0` say it's 1.0.2g. arielCo 6 лет назад 0

Похожие вопросы