无法使用.net mysql连接器连接到mysql rds示例

daupos2t  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(545)

我们需要在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 x..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 x..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连接。如果需要更多的信息,请告诉我。

pxiryf3j

pxiryf3j1#

从错误日志中,它还表示“收到的消息是意外的或格式不正确的”,这通常意味着服务器上的某些配置错误。TLS1.1不再被认为是安全的。
下载iiscrypto查看“schannel”和“cipher suites”选项卡,查看设置是否正确配置,进行更改后是否可以重新启动服务器。
更多参考资料

相关问题