Назад | Перейти на главную страницу

Ошибка MySQL SSL, только при подключении из windows / osX

Я использую 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)

Вот что я сделал, чтобы попытаться решить эту проблему

  1. Я создал контрольные суммы сертификата / ключа / CA на сервере и локальном компьютере, они идентичны
  2. Я посмотрел на Не удается подключиться к MySQL 5.5 с SSL вопрос об ошибке сервера ни одна идея не решила проблему
  3. у меня есть отлаженный SSL запустив сервер openSSL (на сервере mysql) и подключившись с моей локальной машины, снова никаких проблем.

Если это имеет значение, все серверы работают под управлением 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.

Если это все еще не удается, вы можете:

  1. Понюхайте ваше соединение с tcpdump или Wireshark, посмотрите на рукопожатие TLS.
  2. Обход проблемы с станнель или VPN.

Без сертификатов это все безумное предположение.

Но этот выглядит ужасно актуальным: https://dev.mysql.com/doc/refman/5.0/en/creating-ssl-files-using-openssl.html

Короче говоря, сертификат клиента CN ДОЛЖЕН отличаться от CA CN.

Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ОБЯЗАТЕЛЬНО», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ» и «ДОПОЛНИТЕЛЬНО» в этом документе являются следует интерпретировать, как описано в [RFC 2119].