繁体   English   中英

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

[英]cannot connect to mysql rds instance using .NET mysql connector

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

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

SHOW GLOBAL VARIABLES LIKE '%version%';

在此处输入图片说明

  • 显示像'%ssl%'这样的全局变量

在此处输入图片说明

现在,这将验证服务器正在使用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

询问密码并连接正常 在此处输入图片说明

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

询问密码并连接正常

在此处输入图片说明

因此,现在我们有足够的事实可以说,通过此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连接器版本:

在此处输入图片说明

我的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>

它抛出此错误

在此处输入图片说明

现在使用SslMode = None;

在此处输入图片说明

现在使用SslMode = REQUIRED,我得到相同的错误

在此处输入图片说明

我们已经花了很多时间,但仍然无法使用TLS连接。 如果需要更多信息,请告诉我。

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

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

更多参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM