【发布时间】:2018-12-06 13:56:14
【问题描述】:
我们需要在 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 中,我们能够使用工作台和 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 进行连接。如果需要更多信息,请告诉我。
【问题讨论】:
标签: mysql ssl amazon-rds tls1.2 mysql-connector