我想验证mysql远程连接是否出于安全目的使用tls/ssl连接。
首先,我运行status
命令来检查:
mysql> status
--------------
mysql Ver 8.0.19 for osx10.15 on x86_64 (Homebrew)
Connection id: 47
Current database:
Current user: user@127.219.252.250
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.5-10.3.27-MariaDB-0+deb10u1 Debian 10
Protocol version: 10
Connection: 31.224.603.2 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
TCP port: 3306
Binary data as: Hexadecimal
Uptime: 35 min 15 sec
Threads: 9 Questions: 222 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 27 Queries per second avg: 0.104
--------------
这里,ssl行提到了一个密码,但据一些人说,这并不保证连接实际上是ssl加密的。
我刚开始捕获,目标设置为db服务器的ip。
这能用来确保连接是ssl/tls加密的吗?任何帮助都是非常感谢的。
发布于 2022-03-07 10:45:46
如果您有足够的权限在服务器上运行以下查询,它将告诉您如何建立连接:
select t.THREAD_ID,
t.PROCESSLIST_USER,
t.PROCESSLIST_HOST,
t.CONNECTION_TYPE,
sbt.VARIABLE_VALUE AS cipher
FROM performance_schema.threads t
LEFT JOIN performance_schema.status_by_thread sbt
ON (t.THREAD_ID = sbt.THREAD_ID AND sbt.VARIABLE_NAME = 'Ssl_cipher')
WHERE t.PROCESSLIST_USER IS NOT NULL;
如果您在最后两列中看到类似于SSL/TLS
TLS_AES_256_GCM_SHA384
的内容,那么您就可以了。
发布于 2021-02-12 22:39:20
看到"SSL:使用中的密码.“将是非常非常奇怪的。然后让连接不被加密。(如果您知道发生这种情况的任何情况,请包括一个链接。)然而,由于某些原因,例如使用(和信任)一个自签名或其他可能不值得信任的证书,或者使用匿名密码套件,或者使用非常弱的加密,或者类似的,这是不完全安全的。不幸的是,这很难从给定的信息中验证(除了加密的强度,这是非常强的AES256密码)。
正如Wireshark截图所示,您使用的是TLS v1.1。这不是最新的,甚至是第二次最新的版本--现在一切都应该使用TLS 1.2或1.3 --但至少(据我所知)它并没有完全打破一些旧的协议。您可以查看服务器通过查看Wireshark中的相关行发送的证书,但这并不一定能清楚地告诉您证书是否值得信任。
最简单的选择可能只是查看客户端命令行(和选项文件)标志。如果您使用了ssl-mode=REQUIRED
标志(或者,对于旧版本,使用了-ssl=1
或--enable-ssl
标志),那么就强制使用SSL/TLS。其他各种标志控制哪些CA证书是可信的,尽管默认情况下它应该使用合理的列表。
https://security.stackexchange.com/questions/244742
复制相似问题