невозможно подключиться к экземпляру mysql rds с помощью коннектора .NET mysql - PullRequest
0 голосов
/ 06 декабря 2018

Нам нужно включить соединения TLS1.1 в экземпляре mysql rds.У меня есть консольное приложение, которое я использую для проверки моего подключения к экземпляру mysql RDS.

После многих ссор с командой Infra подтверждается, что экземпляр mysql использует TLSv1.1.Найдите выходные данные команды, которые я запустил в рабочей среде mysql:

SHOW GLOBAL VARIABLES LIKE '%version%';

enter image description here

  • показать глобальные переменныекак '% ssl%'

enter image description here

Теперь это подтверждает, что сервер использует TLSv1.1.


Усилия по установлению соединения - Workbench

Все отлично работает


Усилия по установлению соединения - Использование mysql.exe (сервер / bin /)

C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe" -u serverusername -h xxxxxxx.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com dbname -p --ssl-mode=PREFERRED

Запрашивает пароль и отлично соединяется enter image description here

C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe" -u serverusername -h xxxxxxx.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com dbname-p --ssl-mode=DISABLED

Запрашивает пароль и подключаетсяштраф

enter image description here

Итак, теперь у нас есть достаточно фактов, чтобы сказать, что из этого aws Vm мы можем подключиться к экземпляру RDS с помощью рабочей среды иУтилита mysql.exe (оба с поддержкой SSL)

Затем мы пытаемся подключиться к тому же экземпляру RDS с помощью консольного приложения, использующего DLL-библиотеку соединителя mysql, предоставляемого mysql.команда.Ниже приведен код приложения вместе с версией dll коннектора mysql

Код:

  static void Main(string[] args)
    {

        //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        //ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;



        Console.WriteLine("making certficate connection");

        string connMainOut = connMain();

        Console.WriteLine(connMainOut.ToString());
        Console.ReadLine();

    }

 private static string connMain()
    {
        try
        {
            MySqlConnection connection = new MySqlConnection(ConfigurationManager.AppSettings["conns"]);
            connection.Open();
            return connection.ToString();
        }
        catch (Exception ex)
        {

            Console.WriteLine("==============================");
            Console.WriteLine("connMain" + ex.ToString());
            Console.WriteLine("==============================");
            return "null";
        }
    }

Версия коннектора MySql:

enter image description here

Мой app.config выглядит следующим образом:

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>

    <add key="conns" value="SERVER=xxxxxxxx.xxxxxxxxxxxxx.eu-west-1.rds.amazonaws.com;
database=databasename;
user=username;
PASSWORD=password;
SslMode=PREFERRED;"/>
      </appSettings>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
        </startup>
    </configuration>

Выдает эту ошибку

enter image description here

Теперь с использованием SslMode = None;

enter image description here

Теперь с SslMode = REQUIRED я получаю ту же ошибку

enter image description here

Мы уже потратили много времени на это и все еще не можем подключиться с помощью TLS.Если требуется дополнительная информация, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 06 декабря 2018

В журнале ошибок также указано «Полученное сообщение было неожиданным или плохо отформатировано», что обычно означает, что на сервере что-то неправильно настроено.TLS 1.1 больше не считается безопасным.

Скачать IISCrypto , чтобы просмотреть вкладки «Schannel» и «Cipher Suites» и посмотреть, правильно ли настроены параметры и после внесения изменений можно перезапустить сервер.

Подробнее

...