AWS MySQL ERROR 2026 (HY000): Ошибка SSL-соединения:

Я пытаюсь подключиться к своему экземпляру AWS RDS MySQL с терминалом на OSX El Captain, но продолжаю получать эту ошибку:

ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)

Это новая установка OSX, и я использовал brew для установки mysql вместе с openssl, я могу подключиться к локальному серверу. Также кажется, что верстак MySQL работает отлично.

Моя машина Ubuntu прекрасно подключается к экземпляру RDS также через терминал.

3
задан 4 December 2015 в 17:54
2 ответа
..

У меня была та же проблема, и я ее понял... так! варить скорее всего установил mysql 5.7, который, из того, что я могу собрать, требует ssl, если только другой мудрый не указан в --скрип-ссл . Вы можете деинсталлировать mysql запустив brew деинсталлировать mysql, а затем установить 5.5 запустив brew install https://raw.githubusercontent.com/Homebrew/homebrew-versions/master/mysql55.rb && brew link homebrew/versions/mysql555 --force.

Granted, это не решает проблемы с исправлением первоначальной ошибки, но я не нашел никакой документации, почему 5.7 отличается от 5.5 так, как только что был установлен. Удачи вам!

Редактирование: Ага! Вот документация:

--ssl

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

Редактирование 2:

Другой вариант, вместо понижения до 5.5, можно открыть (или создать) /etc/my. cnf или /etc/mysql/my.cnf и добавьте к существующему mysql > 5.7.5 следующее:

[client]
ssl=0

Это отключит ssl на клиентских соединениях и будет вести себя как mysql < 5.7.5.

.
2
ответ дан 3 December 2019 в 06:58

- skip-ssl (или --ssl-mode = DISABLED для MySQL 8.0) не решает эту проблему, а только обходит ее.

Ошибка возникает, когда при подтверждении SSL возникла ошибка, в MySQL отсутствуют подробные сведения об этом, и это обнаруженная ошибка: https://bugs.mysql.com/bug.php?id=75311

Вы должны сначала проверить свои сертификаты:

openssl verify -CAfile /etc/mysql/newcerts/ca-cert.pem /etc/mysql/newcerts/server-cert.pem /etc/mysql/newcerts/client-cert.pem

Затем вы должны выполнить требования MySQL для создания правильных ключей и сертификатов, особенно в отношении значений Common Name, которые должны отличаться: https://dev.mysql.com/doc/refman/8.0/en/creating-ssl-files-using-openssl.html

Вот способ сгенерировать эти сертификаты, может быть, не самый лучший, но он работает, согласно поддержке Activ'Cloud :

Сторона сервера:

openssl genrsa 2048 > /tmp/cert/mysqld-ca-key.pem
openssl req -sha1 -new -x509 -nodes -days 3650 -key /tmp/cert/mysqld-ca-key.pem -subj "/C=FR/ST=/L=/O=mysqld/CN=mysqld-CA" > /tmp/cert/mysqld-ca-cert.pem
openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout /tmp/cert/mysqld-server-key.pem -subj "/C=FR/ST=/L=/O=mysqld/CN=mysqld-server" > /tmp/cert/mysqld-server-req.pem
openssl rsa -in /tmp/cert/mysqld-server-key.pem -out /tmp/cert/mysqld-server-key.pem
openssl x509 -sha1 -req -in /tmp/cert/mysqld-server-req.pem -days 3650 -CA /tmp/cert/mysqld-ca-cert.pem -CAkey /tmp/cert/mysqld-ca-key.pem -set_serial 01 > /tmp/cert/mysqld-server-cert.pem

Сторона клиента:

openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout /tmp/client-cert/mysql-client-key.pem > /tmp/client-cert/mysql-client-req.pem -subj "/C=FR/ST=/L=/O=mysql-client/CN=mysql-client"
openssl rsa -in /tmp/client-cert/mysql-client-key.pem -out /tmp/client-cert/mysql-client-key.pem
openssl x509 -sha1 -req -in /tmp/client-cert/mysql-client-req.pem -days 3650 -CA /tmp/cert/mysqld-ca-cert.pem -CAkey /tmp/cert/mysqld-ca-key.pem -set_serial 01 > /tmp/client-cert/mysql-client-cert.pem                                                                                                                                                                                                    

Затем скопируйте файлы, созданные для клиентской и серверной сторон, в нужные каталоги.

Наконец, , вы можете попробовать принудительно настроить свой зашифрованный список: https://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html#statvar_Ssl_cipher_list

0
ответ дан 3 December 2019 в 06:58

Теги

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