Подключение к MySQL через SSL

Я пытаюсь написать сценарий python, который подключается к MySQL с использованием SSL. Я проверил образец кода в 1 (раздел «Подключение через SSL»), и он работает правильно.

Однако, когда я использую wirehark для захвата отправленных пакетов, я не нашел пакеты протокола TLSv1, но только TCP-пакеты:

введите описание изображения здесь

Я ожидаю пакеты TLSv1, потому что, когда я тестировал HTTPS nginx, wirehark захватывает пакеты TLSv1:

введите описание изображения здесь

Не могли бы вы рассказать мне, почему я не могу захватить пакеты TLSv1 во время сеанса MySQL, даже если SSL был включен?

Спасибо!

Рекомендации:

1 http://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html

HTTPS – это протокол, основанный на подключении SSL / TLS, который устанавливается с самого начала TCP-соединения («неявный» SSL / TLS). Весь HTTP-трафик обменивается через SSL / TLS, и он выполняется на отдельном порту, поэтому Wireshark знает, что ожидается, что он сначала расшифрует его как SSL / TLS.

Протокол MySQL не является (это «явный» SSL / TLS): связь начинается с обычного текста и затем обновляется до SSL / TLS. (Более подробно об этих двух режимах здесь и здесь .)

Если вы посмотрите на документацию по протоколу сетевого протокола MySQL , сервер по-прежнему отправляет свое первоначальное сообщение подтверждения сначала как в обычных, так и в соединениях SSL / TLS («Приветствие сервера», которое вы видите в своем захвате). Также есть более подробный пример в разделе SSL документации внутренних документов MySQL .

В некоторых случаях Wireshark, возможно, не сможет догадаться, что SSL / TLS использовался, когда он является частью связи другого протокола на том же порту. Вы можете попытаться заставить его декодировать трафик как SSL / TLS, щелкнув правой кнопкой мыши на пакете и выбрав «Decode As …» (тогда SSL).

Это должно по крайней мере объяснить различное поведение HTTPS и MySQL относительно того, что вы видите с Wireshark.

Учитывая ваш конкретный пример на этом скриншоте, трудно сказать, какой из них является клиентом, а какой – сервером, поскольку вы обмениваетесь данными с localhost на localhost (это было бы более заметно, если бы вы выбрали отображение портов источника и назначения) ,

Я не пробовал себя, но кажется разумным предположить, что «Запрос на вход пользователя =» поступает от клиента и не выполняется через SSL / TLS, что, как представляется, указывает на то, что это конкретное соединение не использует SSL / TLS , (Я не знаком с деталями сетевого протокола MySQL, поэтому вы можете попытаться декодировать трафик как SSL в Wireshark, чтобы узнать, что происходит. Также сложно ответить без дополнительной информации о ваших настройках, как на клиенте и сервер.)