c# - 检查 MySqlConnection 是否使用 SSL

标签 c# mysql ssl

我认为我的问题类似于 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/

相关文章:

ssl - docker SSL 连接错误

c# - 获取 "cannot insert NULL into ("架构"."table"."column") 当列不为空时

c# - ASP.NET 为整行数据表/ GridView 添加超链接

c# - 主动拒绝 C# 与 Ubuntu MySQL 服务器的连接

Mysql排名系统

authentication - 通过 http 使用 socket io,是否可以安全登录程序?

ssl - Alfresco & Solr SSL 证书握手超时

c# - 双向链表到 JSON

c# - 使用 NEST C# 在 Elasticsearch 中使用多个索引进行全文搜索

python - 将字符串传递给 SQLalchemy 查询