Нам нужно включить соединения TLS1.1 в экземпляре mysql rds.У меня есть консольное приложение, которое я использую для проверки моего подключения к экземпляру mysql RDS.
После многих ссор с командой Infra подтверждается, что экземпляр mysql использует TLSv1.1.Найдите выходные данные команды, которые я запустил в рабочей среде mysql:
SHOW GLOBAL VARIABLES LIKE '%version%';
![enter image description here](https://i.stack.imgur.com/Oh9Ca.png)
- показать глобальные переменныекак '% ssl%'
![enter image description here](https://i.stack.imgur.com/0f1gR.png)
Теперь это подтверждает, что сервер использует 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](https://i.stack.imgur.com/XeVvP.png)
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](https://i.stack.imgur.com/ZRhB2.png)
Итак, теперь у нас есть достаточно фактов, чтобы сказать, что из этого 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](https://i.stack.imgur.com/H2FTJ.png)
Мой 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](https://i.stack.imgur.com/XpGTA.png)
Теперь с использованием SslMode = None;
![enter image description here](https://i.stack.imgur.com/xPfMT.png)
Теперь с SslMode = REQUIRED я получаю ту же ошибку
![enter image description here](https://i.stack.imgur.com/XpGTA.png)
Мы уже потратили много времени на это и все еще не можем подключиться с помощью TLS.Если требуется дополнительная информация, пожалуйста, дайте мне знать.