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

Jos*_*ore 6 mysql ssl openssl

我正在使用 openssl 生成 ssl 证书,我使用该证书通过 SSL 加密连接到 mysql。当我从本地主机环境连接时,这工作正常(即使我通过服务器公共 IP 连接,我也从 Web 服务器盒成功连接)。但是,当我尝试从本地开发机器连接时,出现 SSL 错误。

从托管平台连接时

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

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

mysql -u 指标 -h 45.33.xx -p --ssl-key=client-key.pem --ssl-cert=client-cert.pem --ssl-ca=ca.pem
输入密码:
ERROR 2026 (HY000): SSL 连接错误: error:00000001:lib(0):func(0):reason(1)

这是我为解决此问题所做的工作

  1. 我在服务器和本地机器上生成了 cert/key/ca 的校验和,它们是相同的
  2. 我看过Can't connect to MySQL 5.5 with SSL server fault question 这两个想法都没有解决问题
  3. 我已经通过启动 openSSL 服务器(在 mysql 服务器上)并从我的本地机器连接来调试 SSL,再次没有问题。

如果它有所不同,服务器都运行带有 openSSL“OpenSSL 1.0.1f 6 Jan 2014”的 ubuntu 14.04,我从 osX 10.10.4 与 openSSL“OpenSSL 1.0.2c 2015 年 6 月 12 日”连接

那么有什么想法吗?

sam*_*usz 2

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

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

如果仍然失败您可以:

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