我正在使用 MySQL 官方网站的 MySQL .NET 连接器。我正在尝试从我的 C# 程序到 Mysql 数据库建立安全的 SSL 连接。 Mysql 服务器允许使用 SSL 连接。have_ssl
变量设置为yes
and ca-cert
, server-cert
and server-key
被指定。
用户的权限是:
'GRANT USAGE ON *.* TO \'logowanie\'@\'%\' IDENTIFIED BY PASSWORD \'*...\' REQUIRE SSL'
'GRANT SELECT ON `db`.`table1` TO \'logowanie\'@\'%\''
所以我假设该用户没有 SSL 就无法登录?我对吗?
我的 C# 程序中的连接字符串如下所示:
"server=127.0.0.1;uid=logowanie;pwd=log1;database=ewidencja;SslMode=Required";
请注意,此连接字符串没有任何证书文件的路径!它只有“SSLMode=Required”选项。是否可以在没有任何其他 SSL 选项的情况下进行 SSL 加密连接?
用户可以登录并执行一些选择命令table1
。所以我假设这个连接是 SSL 加密的?
如何检查此连接是否经过 SSL 加密以确保 100% 可靠?
发布我的答案https://stackoverflow.com/a/46609559/492336:
您可以从 MySqlConnection 内部执行此 SQL 语句:SHOW SESSION STATUS LIKE 'Ssl_cipher'
,它会显示连接是否已加密。
示例代码:
var connection = new MySqlConnection(ConfigurationManager.AppSettings["Test"]);
connection.Open();
var command = new MySqlCommand("SHOW SESSION STATUS LIKE \'Ssl_cipher\'", connection);
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"{reader.GetString(0)}: {reader.GetString(1)}");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)