Я использую openssl для создания сертификатов ssl, которые я использую для подключения к mysql с шифрованием SSL. Это отлично работает, пока я подключаюсь из среды локального хоста (даже когда я подключаюсь через общедоступный IP-адрес сервера, я также успешно подключился из ящиков веб-сервера). Однако, когда я пытаюсь подключиться с моей локальной машины разработчика, я получаю ошибку SSL.
При подключении с хостинг-платформы
mysql -u metrics -p -h 45.33.x.x --ssl-key=client-key.pem --ssl-ca=ca.pem --ssl-cert=client-cert.pem Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 136 ...
При подключении с компьютера Mac dev я использовал scp для копирования файлов сертификата / ключа на мою машину dev.
mysql -u metrics -h 45.33.x.x -p --ssl-key=client-key.pem --ssl-cert=client-cert.pem --ssl-ca=ca.pem Enter password: ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)
Вот что я сделал, чтобы попытаться решить эту проблему
Если это имеет значение, все серверы работают под управлением ubuntu 14.04 с openSSL «OpenSSL 1.0.1f 6 января 2014 года», и я подключаюсь из osX 10.10.4 с openSSL «OpenSSL 1.0.2c 12 июня 2015 года»
Итак, есть идеи?
Похоже, проблема связана с шифром. Попробуйте добавить параметр как на сервере, так и на клиенте: --ssl-cipher=AES128-SHA
. Вы можете использовать любой другой набор, представленный с обеих сторон в выводе openssl ciphers HIGH
.
Также возможно, что файл конфигурации клиента MySQL включает ssl-verify-server-cert
вариант, если да, удалите его или (безопаснее) используйте доменное имя из сертификата сервера CN.
Если это все еще не удается, вы можете:
Без сертификатов это все безумное предположение.
Но этот выглядит ужасно актуальным: https://dev.mysql.com/doc/refman/5.0/en/creating-ssl-files-using-openssl.html
Короче говоря, сертификат клиента CN ДОЛЖЕН отличаться от CA CN.
Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ОБЯЗАТЕЛЬНО», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ» и «ДОПОЛНИТЕЛЬНО» в этом документе являются следует интерпретировать, как описано в [RFC 2119].