У меня есть клиент Python. Используя ssl.SSLContext() (документация здесь) и set_ciphers(myciphers) (где myciphers - мой список наборов шифров, которые я изменяю при каждом рукопожатии, т. Е. При каждом соединении с сокетом). Я могу контролировать список клиентских шифров. SSLContext по умолчанию в python отключает SSL 2.0 и SSL 3.0 по умолчанию, и я не изменяю версии в коде моего клиента.

Я отправляю 3 рукопожатия на сайт, используя разные списки шифров в каждом. Я не меняю версию.

В Wireshark ClientHello в столбце "протокол" я вижу разные версии? Я связываюсь с тем же сайтом. Клиент не меняет версию.

1) Можете ли вы объяснить мне, почему я вижу другую версию протокола TLS? 2) Если это не фактическая версия, предложенная клиентом (которая должна быть TLS 1.2), где я могу получить реальную версию TLS, предложенную клиенту?

Вот скриншот для пояснения (пожалуйста, извините за его форму, но для анонимности сайтов и имен ПК):

РЕДАКТИРОВАТЬ: Хотя в столбце ClientHello отображается TLSv1, когда я нажимаю на кнопку записи и вижу расширенную область. Я вижу это:

> Secure Socket Layer
 > TLSv1.2 Record Layer: Handshake Protocol: Client Hello

Я сбит с толку. Для меня очень важно убедиться, что мой клиент всегда пробует TLS 1.2. Я оставил Python по умолчанию, который должен делать это в соответствии с их документацией.

РЕДАКТИРОВАТЬ 2: Я делаю просмотр фильтра, чтобы увидеть TLS 1.0 (как показано на экране, там ClientHellos отправляет TLSv1). Но с этим фильтром просмотра:

ssl.handshake.version==0x0301

Нет ClientHell o сообщения не появляются для меня. Только какой-то ServerHello . Пожалуйста, объясните мне. Это довольно запутанно.

0