如何验证我正在使用 SSL 连接到 mysql?

chr*_*ris 34 mysql ssl

我已将我的服务器配置为允许 SSL,并修改了我的客户端 ~/.my.cnf,因此我使用 SSL:

[client]
ssl
ssl-cipher=DHE-RSA-AES256-SHA
ssl-ca=~/certs/ca-cert.pem
Run Code Online (Sandbox Code Playgroud)

当我使用客户端登录并查看状态时,它会在 SSL 行上列出一个密码:

mysql> \s
--------------
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Run Code Online (Sandbox Code Playgroud)

如果不安装wireshark 之类的东西来验证连接是否安全,我是否可以根据此信息假设我是通过 SSL 连接的?

Jer*_*ams 42

从客户端,只需运行status. 如果此连接使用 SSL,您将在 SSL 行中获得一些有趣的信息。

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.5.30, for Linux (x86_64) using readline 5.1

Connection id:      12
Current database:
Current user:       replicator@domU-12-31-39-10-54-BD.compute-1.internal
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.5.30-log MySQL Community Server (GPL)
Protocol version:   10
Connection:     boston.hugskeep.wstudent.com via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:       3306
Uptime:         44 min 49 sec

Threads: 2  Questions: 16  Slow queries: 0  Opens: 34  Flush tables: 1  Open tables: 27  Queries per second avg: 0.005
--------------

mysql>
Run Code Online (Sandbox Code Playgroud)

如果此连接未使用 SSL,您将获得:

SSL:            Not in use
Run Code Online (Sandbox Code Playgroud)

您还可以使用:

mysql> SHOW STATUS LIKE 'Ssl_cipher';
+---------------+--------------------+
| Variable_name | Value              |
+---------------+--------------------+
| Ssl_cipher    | DHE-RSA-AES256-SHA |
+---------------+--------------------+
1 row in set (0.00 sec)

mysql>
Run Code Online (Sandbox Code Playgroud)

但我认为第一个更有吸引力,而且肯定更容易打字。

  • `show status like 'Ssl_version'` 也可用于确定正在使用的 SSL/TLS 协议版本。 (5认同)

小智 5

强制每个用户使用 SSL:

alter user 'my_user'@'%' REQUIRE SSL;
mysql> \s
Run Code Online (Sandbox Code Playgroud)