我认为我的问题类似于 C#: how to check if a MySqlConnection is using SSL or not? ,但不幸的是,它没有很好的答案,因为它可能还不清楚。所以这是我的看法:
我创建了一个新连接:
var connection = new MySqlConnection("Data Source=example.com;Port=3306;Database=Foo;User Id=root;Password=foo;SSL Mode=Required");
我如何验证它使用 SSL,是否有类似 connection.IsOverSSL
的东西?
编辑:
我尝试使用 SHOW SESSION STATUS LIKE 'Ssl_cipher'
,但这给了我 Ssl_cipher
即使 SSL Mode=Required
:
我使用的代码是:
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));
}
根据 https://dev.mysql.com/doc/refman/5.7/en/using-encrypted-connections.html ,它应该给我 Ssl_cipher | DHE-RSA-AES128-GCM-SHA256
最佳答案
原来我没有打印查询的第二列,现在可以了:
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)}");
}
它打印Ssl_cipher: AES256-SHA
对于 SSL Mode=Required
, 和 Ssl_cipher:
对于 SSL Mode=None
.另一方面,我得到 Ssl_cipher: AES256-SHA
即使SSL Mode
完全缺失,所以它可能默认打开。
关于c# - 检查 MySqlConnection 是否使用 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46602255/