Я пытаюсь подключиться к своему экземпляру 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 также через терминал.
У меня была та же проблема, и я ее понял... так! варить
скорее всего установил 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.
- 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