【问题标题】:What ciphers do I have available in MySQL Client?MySQL 客户端中有哪些可用的密码?
【发布时间】:2018-11-23 10:48:39
【问题描述】:

我在尝试使用 SSL 连接到带有 mysqlWorkbench 的远程 MySQL 5.6(Percona 节点)服务器时遇到神秘错误。我已经制作了自己的签名证书和自己的 CA。

mysql -h host -p -u user --ssl-ca=ca-cert.pem

ERROR 2026 (HY000):SSL 连接错误:协议版本不匹配

我已经阅读过我应该包含密码选项。所以我通过 SSH 连接到服务器并重新运行相同的命令(没有主机)来提取本地连接的密码。

mysql>  show session status like '%cipher';
+---------------+-----------------------------+
| Variable_name | Value                       |
+---------------+-----------------------------+
| Ssl_cipher    | ECDHE-RSA-AES128-GCM-SHA256 |
+---------------+-----------------------------+

当我重试包含密码时,我会收到下一条错误消息。

mysql -h host -p -u user --ssl-ca=ca-cert.pem --ssl-cipher=ECDHE-RSA-AES128-GCM-SHA256

ERROR 2026 (HY000):SSL 连接错误:无法设置要使用的密码

我从Connect to MySQL using SHA2 了解到,我的客户端很可能无法使用 SHA256 或更高版本进行连接。

我检查了不具有高 SHA 的可用服务器密码:

ECDHE-RSA-AES128-SHA
ECDHE-ECDSA-AES128-SHA
ECDHE-RSA-AES256-SHA
ECDHE-ECDSA-AES256-SHA
DHE-DSS-AES128-SHA
DHE-RSA-AES128-SHA
DHE-RSA-AES256-SHA
AES128-SHA
DH-DSS-AES128-SHA
ECDH-ECDSA-AES128-SHA
AES256-SHA
DH-DSS-AES256-SHA
ECDH-ECDSA-AES256-SHA

我尝试了这些密码,但无济于事。谁能帮我诊断一下这个问题?我的证书可能有问题吗?还是证书确定密码?

更新:链接库

我检查了我的服务器,mysqld 的 SSL 已链接到

libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0

尽管如此,我知道 Percona 版本与 OpenSSL 相关联。 客户端是针对

编译的
linux-vdso.so.1 => 
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
libz.so.1       => /lib/x86_64-linux-gnu/libz.so.1
libdl.so.2      => /lib/x86_64-linux-gnu/libdl.so.2
libtinfo.so.5   => /lib/x86_64-linux-gnu/libtinfo.so.5
libstdc++.so.6  => /usr/lib/x86_64-linux-gnu/libstdc++.so.6
libm.so.6       => /lib/x86_64-linux-gnu/libm.so.6
libgcc_s.so.1   => /lib/x86_64-linux-gnu/libgcc_s.so.1
libc.so.6       => /lib/x86_64-linux-gnu/libc.so.6
/lib64/ld-linux-x86-64.so.2```

我没有看到任何与 SSL 相关的内容,但存在 libdl,这意味着可能存在动态加载。但是,我怀疑这个客户端很可能是为 YaSSL 编译的。

【问题讨论】:

    标签: mysql ssl openssl ssl-certificate percona


    【解决方案1】:

    阅读手册页https://dev.mysql.com/doc/refman/5.7/en/encrypted-connection-protocols-ciphers.html

    它列出了 MySQL 传递给 OpenSSL 和 yaSSL 的密码。您的客户端可能使用 OpenSSL 或 yaSSL 中的一种编译。

    【讨论】:

    • 我想你应该先帮我找出我的客户端是用什么编译的。我实际上不知道,但我想我可以通过某种方式找到答案。顺便说一句,当我将服务器明确描述为 MySQL 5.6(Percona 节点)服务器 时,您向我发送了 5.7 参考的链接。我去看看dev.mysql.com/doc/refman/5.6/en/… 并在那里寻找解决方案
    • 我的客户端肯定是针对 YaSSL 编译的。我检查了两组中存在的所有密码,现在错误切换回protocol version mismatch。有什么方法可以将我的客户端连接到服务器?这是不可逾越的矛盾吗?这是否值得在 SO 中提出一个新问题?
    猜你喜欢
    • 2010-09-11
    • 1970-01-01
    • 2017-11-28
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2020-05-18
    • 2020-10-22
    相关资源
    最近更新 更多