我发现通过Linux命令行保存远程SSL证书,但在MySQL(因此TLS)的情况下,它不起作用。
所以问题是 – 我如何检查远程证书的TLS连接到MySQL?
MySQL不在端口上使用直接的SSL(如果是这样的话,不可能使用相同的TCP / 3306端口同时进行未encryption和encryption的连接),就像使用端口TCP / 80不能同时使用端口HTTP和HTTPSstream量)。
它也不使用一些简单的文本STARTTLS命令从未encryption的切换到SSLencryption连接(如IMAP,POP3,FTP,SMTP,XMPP等使用)。 相反,它使用自己的二进制协议来协商MySQL选项(SSL只是其中之一)。 您可以看到它在sql_real_connect()函数中的mysql源代码中是如何工作的。
所以要得到你想要的,你将需要编写自定义程序来模拟SSL libmysql连接,但在过程中输出带有SSL证书的额外debugging信息。 良好的起点可能是来自mysql源的sql-common / client.c(查找CLIENT_SSL)。 不幸的是,我不知道有任何这样的程序已经写(不是我没有看,只是没有find任何)。
另外,如果你有服务器的ssh / NRPE访问权限,你可以很容易地使用脚本来使用openssl(1)直接从mysqld使用的PEM文件中显示证书,这样会容易得多。