MySQL SSL 错误,仅当从 windows/osX 连接时

MySQL SSL 错误,仅当从 windows/osX 连接时

我正在使用 openssl 生成 ssl 证书,并使用该证书通过 SSL 加密连接到 mysql。当我从本地主机环境连接时,此方法运行良好(即使我通过服务器公共 IP 连接,我也已从 Web 服务器框成功连接)。但是,当我尝试从本地开发计算机连接时,出现 SSL 错误。

从托管平台连接时

mysql -u 指标 -p -h 45.33.xx --ssl-key=客户端密钥.pem --ssl-ca=ca.pem --ssl-cert=客户端证书.pem
输入密码:
欢迎使用 MySQL 监视器。命令以 ; 或 \g 结尾。
您的 MySQL 连接 ID 是 136 ...

从 Mac 开发机连接时,我使用 scp 将证书/密钥文件复制到我的开发机

mysql -u 指标 -h 45.33.xx -p --ssl-key=客户端密钥.pem --ssl-cert=客户端证书.pem --ssl-ca=ca.pem
输入密码:
错误 2026 (HY000):SSL 连接错误:错误:00000001:lib(0):func(0):原因(1)

以下是我为解决这个问题所做的事情

  1. 我已经在服务器和本地机器上生成了 cert/key/ca 的校验和,它们是相同的
  2. 我看过无法使用 SSL 连接到 MySQL 5.5服务器故障问题 没有办法解决问题
  3. 我有调试 SSL通过启动 openSSL 服务器(在 mysql 服务器上)并从我的本地机器连接,再次没有问题。

如果有什么不同的话,那么所有服务器都运行的是 ubuntu 14.04 和 openSSL“OpenSSL 1.0.1f 6 Jan 2014”,而我则是从 osX 10.10.4 连接,使用的 openSSL 是“OpenSSL 1.0.2c 12 Jun 2015”

那么有什么想法吗?

答案1

这看起来像是与密码相关的问题。请尝试在服务器和客户端上添加选项:--ssl-cipher=AES128-SHA。您可以使用输出中双方都存在的任何其他套件openssl ciphers HIGH

MySQL 客户端配置文件也可能包含ssl-verify-server-cert选项,如果是这样,请删除它或(更安全)使用来自服务器证书 CN 的域名。

如果仍然失败,您可以:

  1. 使用 tcpdump 或 Wireshark 嗅探您的连接,查看 TLS 握手。
  2. 解决问题隧道或 VPN。

答案2

如果没有看到证书,这一切都只是猜测。

但这个看起来非常相关:https://dev.mysql.com/doc/refman/5.0/en/creating-ssl-files-using-openssl.html

简而言之,客户端证书 CN 必须与 CA CN 不同。

本文件中的关键词“必须”、“不得”、“要求”、“应”、“不应”、“应该”、“不应该”、“建议”、“可以”和“可选”应按以下方式解释:[RFC 2119]

相关内容