MySQL 通过 OpenSSL 的 TLS 验证失败

MySQL TLS verification via OpenSSL Fails

我的 MySQL 实例配置为使用 TLS。我已经通过故意使用不受信任的证书并观察客户端连接失败(带有适当的错误消息)然后重新启动 MySQL 服务并配置了受信任的证书并让客户端成功连接来验证了这一点。

我想使用 openssl 的 s_client 进行最终检查,但我无法让它工作。当我执行下面的命令时,我收到一条错误消息,显示 "SSL23_GET_SERVER_Hello:unknown protocol" 后跟 "no peer certificate available" 后跟更多文本。但是,当我对启用 TLS 的 Tomcat 实例和远程桌面端口使用相同的命令时,我能够建立连接并查看服务器的证书。我究竟做错了什么? MySQL 在 TLS 握手开始之前是否进行了一些额外的预协商?

openssl s_client -showcerts -connect host:port

虽然MySQL可能会使用TLS,但它不是整个外层。在 TLS 启动之前会出现少量前导码。 openssl 命令行不知道这一点。

使用 mysql 客户端及其 TLS 选项来测试客户端证书。

我将@danblack 的回复标记为正确,因为他确实回答了问题。但是,我想提供更多信息,以防对其他人有所帮助。

small amount of preamble that occurs before TLS starts

他提到的可以在 GitHub here.

上找到