如何检查MySQL连接是否经过SSL加密?

ldioqlga  于 2023-05-21  发布在  Mysql
关注(0)|答案(4)|浏览(506)

我使用MySQL .NET连接器从MySQL官方网站。我试图从我的C#程序到Mysql数据库建立一个安全的SSL连接。MySQL服务器允许使用SSL连接。have_ssl变量设置为yes,并指定ca-certserver-certserver-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上执行一些select命令。所以我假设这个连接是SSL加密的?如何检查此连接是否经过SSL加密以100%确定?

pbwdgjma

pbwdgjma1#

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)}");
}
rggaifut

rggaifut2#

如何检查此连接是否经过SSL加密以100%确定?
安装Wireshark,捕获流量,您将100%确定它是否加密。

polhcujo

polhcujo3#

Openssl https://www.openssl.org/附带了一个名为“s_client”的工具,可用于测试SSL服务器。这适用于 *nix、cygwin和Win32。
样品使用
$ openssl s_client -connect服务器名:port -CAfile /path/to/ca.pem -debug -showcerts
有无数的选项,如-pause、-state等。您可能会发现它对跟踪SSL的设置和拆除非常有用。
安全保障
使用Wireshark,正如Miljen指出的那样。
下面是一些关于wireshark的提示
1.使用Wireshark收集流量
1.验证数据包的内容是否看起来像随机噪声(随机字节)。
1.此输出应足以检查您是否已打开SSL。
如果您想测试SSL代码是否正常工作,还可以检查是否可以与其他SSL实现互操作。
你是否正确地硬编码了服务器的公钥,或者正确地检查了服务器证书,以确保它对应于你的服务器而不是一些冒名顶替者?是否启用了客户端身份验证?您是否以合理的方式设置了可接受的密码套件列表?你使用TLS 1.2了吗?您是否知道TLS仅保护通信信道,但您仍然需要确保端点是安全的,例如,免受各种恶意攻击?
这可能会让你开始测试这里有一些提示
测试参见https://www.owasp.org/index.php/Testing_for_SSL-TLS_%28OWASP-CM-001%29
这个链接包含了很棒的东西,但它绝不是详尽无遗的。这些测试适用于HTTPS,但它们应该适用于任何SSL实现,因为它分析的是SSL协议,而不是应用程序级协议。

ztmd8pv5

ztmd8pv54#

在CLI上,您可以运行此命令来检查数据是否已加密。
sudo tcpdump -l -i eth0 -w - src or dst port 3306 | strings

相关问题