Paw*_*zyk 3 c# mysql connection ssl
我正在使用 MySQL 官方网站上的 MySQL .NET 连接器。我正在尝试建立从我的 C# 程序到 Mysql 数据库的安全 SSL 连接。Mysql 服务器允许使用 SSL 连接。have_ssl变量设置为yes和ca-cert,server-cert并server-key指定。
用户的权限是:
'GRANT USAGE ON *.* TO \'logowanie\'@\'%\' IDENTIFIED BY PASSWORD \'*...\' REQUIRE SSL'
'GRANT SELECT ON `db`.`table1` TO \'logowanie\'@\'%\''
Run Code Online (Sandbox Code Playgroud)
所以我假设,这个用户不能在没有 SSL 的情况下登录?我对吗?
我在 C# 程序中的连接字符串如下所示:
"server=127.0.0.1;uid=logowanie;pwd=log1;database=ewidencja;SslMode=Required";
Run Code Online (Sandbox Code Playgroud)
看到这个连接字符串没有任何证书文件的路径!它只有“SSLMode=Required”选项。是否可以在没有任何其他 SSL 选项的情况下进行 SSL 加密连接?
并且用户能够登录并在 上执行一些选择命令table1。所以我假设这个连接是 SSL 加密的?如何检查此连接是否经过 SSL 加密以确保 100%?
从/sf/answers/3262669161/发布我的回答:
您可以从 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)}");
}
Run Code Online (Sandbox Code Playgroud)