检查远程证书 - MySQL

检查远程证书 - MySQL

我发现通过 Linux 命令行保存远程 SSL 证书但在 MySQL(以及 TLS)的情况下,它不起作用。

所以问题是 - 如何检查与 MySQL 的 TLS 连接的远程证书?

答案1

MySQL 不在端口上使用直接 SSL(如果使用,就不可能对未加密和加密连接使用相同的 TCP/3306 端口,同样,也不可能对 HTTP 和 HTTPS 流量使用端口 TCP/80)。

它还不使用一些简单的文本 STARTTLS 命令从未加密切换到 SSL 加密连接(如 IMAP、POP3、FTP、SMTP、XMPP 等使用)。相反,它使用自己的二进制协议来协商 mysql 选项(SSL 只是其中之一)。您可以在 mysql 源代码中的 sql_real_connect() 函数中看到它的工作原理。

因此,要获得所需的结果,您需要编写自定义程序来模拟 SSL libmysql 连接,但在此过程中输出带有 SSL 证书的额外调试信息。好的起点可能是来自 mysql 源代码的 sql-common/client.c(查找 CLIENT_SSL)。不幸的是,我不知道已经编写了任何此类程序(不是我没有看过,只是没有找到)。

或者,如果您可以通过 ssh/NRPE 访问服务器,您可以轻松地破解脚本以使用 openssl(1) 直接从 mysqld 正在使用的 PEM 文件显示证书,这会容易得多。

答案2

OpenSSLs_client命令的最新版本支持该-starttls mysql标志。如果添加该标志,您还可以检查 MySQL 服务的证书。

答案3

由于这个问题在谷歌搜索结果中排名第一,我想补充一点,我现在找到的唯一方法是使用以下方法捕获 SSL 握手:

tcpdump -ni any port 3306 -w dump.cap

然后用 Wireshark 打开它并检查证书:

在此处输入图片描述内容

相关内容