я обнаружил Сохранить удаленный сертификат SSL через командную строку Linux но в случае MySQL (и, следовательно, TLS) это не работает.
Итак, вопрос в том, как мне проверить удаленный сертификат для подключения TLS к MySQL?
MySQL не использует прямой SSL для порта (если бы это было так, было бы невозможно использовать один и тот же порт TCP / 3306 как для незашифрованных, так и для зашифрованных соединений, почти таким же образом невозможно использовать порт TCP / 80 для обоих HTTP и HTTPS трафик).
Он также не использует простую текстовую команду STARTTLS для переключения с незашифрованного соединения на зашифрованное SSL (например, использование IMAP, POP3, FTP, SMTP, XMPP и т. Д.). Вместо этого он использует свой собственный двоичный протокол для согласования параметров mysql (SSL является лишь одним из них). Вы можете увидеть, как это работает в исходном коде mysql, в функции sql_real_connect ().
Итак, чтобы получить то, что вы хотите, вам нужно будет написать специальную программу для имитации SSL-соединения libmysql, но выводить дополнительную отладочную информацию с сертификатом SSL в процессе. Хорошей отправной точкой может быть sql-common / client.c из источника mysql (ищите CLIENT_SSL). К сожалению, мне неизвестны уже написанные такие программы (не то чтобы я не смотрел, просто не нашел).
В качестве альтернативы, если у вас есть ssh / NRPE-доступ к серверу, вы можете легко взломать скрипт для использования openssl (1) для отображения сертификата непосредственно из файла PEM, который использует mysqld, что было бы намного проще.
Поскольку этот вопрос является лучшим результатом Google для этого, я хочу добавить, что единственный метод, который я нашел прямо сейчас, - это захват подтверждения SSL с помощью
tcpdump -ni any port 3306 -w dump.cap
а затем откройте его с помощью Wireshark и проверьте сертификат:
содержание