Ошибка MySQL SSL:неправильный номер версии

У меня проблемы с MySQL и OpenSSL. Я использую MySQL 5.7 и OpenSSL 1.1.0g на Ubuntu 16.04

. Независимо от того, какие сертификаты я загружаю, MySQL запускается, но не устанавливает соединение через SSL, если сертификаты проверены. Например, если я разрешаю ему создавать собственные сертификаты, это находится в /var/log/mysql/error.log:

2019-02-17T09:42:25.666293Z 0 [Примечание ] В каталоге данных найдены файлы ca.pem, server-cert.pem и server-key.pem. Попытка включить поддержку SSL с их помощью.

2019-02-17T09:42:25.666543Z 0 [Предупреждение] Сертификат CA ca.pem является самозаверяющим.

Вполне нормально. Но: /usr/bin/openssl s_client -connect localhost:3306дает мне это:

CONNECTED(00000003)

140234876264896:ошибка:1408F10B:процедуры SSL:ssl3_get_record:неправильный номер версии :../ssl/record/ssl3_record.c:252:

Если я создам отдельный CA и само-подписанные сертификаты с помощью openssl, это не будет иметь никакого значения -такая же ошибка. В крайнем случае я попытался использовать сертификат LetsEncrypt моего веб-сервера с сертификатом LE CA, чтобы избежать использования само-подписанного сертификата, с точно таким же результатом.

Оказывается, любое приложение, пытающееся подключиться, например phpMyAdmin, также завершается ошибкой OpenSSL, если только ему не разрешено небезопасное подключение.

Если я установил $cfg['Servers'][$i]['ssl_verify'] = false;в phpMyAdmin/admin/config.inc.php, он подключается через SSL, но с предупреждением «не проверено».

Исходя из этого, я думаю, что это похоже на ошибку ЦС, а не на ошибку сертификата, но, поскольку я получаю один и тот же результат независимо от того, какой сертификат ЦС настроен, я в растерянности. Какие-либо предложения?

0
задан 17 February 2019 в 11:58
1 ответ

Соединение MySQL SSL — это не просто стандартное соединение SSL с соединением MySQL внутри.

При установлении такого соединения клиент MySQL сначала устанавливает связь с сервером, используя открытый текстовый протокол MySQL, (если обе стороны согласны с использованием SSL), затем запускает SSL-соединение на том же TCP-соединении.

OpenSSL или другой SSL-клиент общего назначения не может понять незашифрованный текстовый протокол MySQL, они напрямую установят SSL-соединение без этого специфичного для MySQL рукопожатия, а затем сообщат об ошибке версии, поскольку это вообще не стандартный SSL-сервер.

Документ о том, как MySQL устанавливает SSL-соединение:https://dev.mysql.com/doc/internals/en/ssl.html

1
ответ дан 24 September 2021 в 07:15

Теги

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