无法使用.NET mysql连接器连接到mysql rds实例

时间:2018-12-06 13:56:15

标签: mysql ssl amazon-rds tls1.2 mysql-connector

我们需要在mysql rds实例上启用TLS1.1连接。我有一个控制台应用程序,用于测试与mysql RDS实例的连接。

与Infra团队进行了多次接触后,确认mysql实例正在使用TLSv1.1。请找到我在mysql工作台中运行的命令输出:

SHOW GLOBAL VARIABLES LIKE '%version%';

enter image description here

  • 显示诸如'%ssl%'之类的全局变量

enter image description here

现在,这将验证服务器正在使用TLSv1.1。


建立连接的努力-工作台

一切正常


建立连接的努力-使用mysql.exe(server / 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中我们可以使用workbench和mysql.exe实用程序(均已启用SSL)连接到RDS实例

然后,接下来我们尝试使用控制台应用程序连接到相同的RDS实例,该控制台应用程序使用mysql团队提供的mysql连接器DLL。请在下面找到应用程序代码以及mysql连接器dll版本

代码:

  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 :(得分:0)

在错误日志中,它还会显示“收到的消息意外或格式错误”,这通常意味着服务器上的配置错误。 TLS 1.1不再被认为是安全的。

下载IISCrypto来查看“ Schannel”和“ Cipher Suites”选项卡,查看设置是否正确配置,并且进行更改后可以重新启动服务器。

More Reference