MariaDB 中的 SSL 现状
通常当人们说“SSL”或“TLS”时,它指的不是一个特定的协议,而是一个 *协议族*。维基百科文章 有详细介绍,但简而言之,SSL 2.0 和 SSL 3.0 已被弃用,不应再使用(众所周知的 POODLE 漏洞利用了 SSL 3.0 中的缺陷)。TLS 1.0 已经有十六年历史了,虽然仍在被使用,但新的安全标准(例如 PCI DSS v3.1)要求使用 TLS 1.1 或更好的 TLS 1.2。
MySQL 自 2001 年起就支持 TLS 1.0。这意味着 MariaDB 从第一天起就支持它,并且从未支持较弱的 SSL 2.0 或 SSL 3.0。自 MariaDB 5.5.41(发布于 2014 年 12 月 21 日)和 MariaDB 10.0.15(2014 年 11 月 25 日)起,我们也支持 TLS 1.1 和 TLS 1.2。例如,您可以使用以下方式只选择 TLS 1.2 密码套件:
ssl-cipher=TLSv1.2
在 my.cnf
文件中。但这仅在 MariaDB 使用 OpenSSL 编译时有效——即在 MariaDB.org 存储库 中的所有 MariaDB 包中,但不包括二进制 tarball(它们使用 YaSSL 编译)。
请注意,如果您认真对待在 MariaDB 中使用 SSL,应在所有客户端中启用服务器证书验证。例如,使用:
[client] ssl-verify-server-cert
没有它,您的连接很容易受到中间人攻击,任何有可能劫持连接的人都可以替换证书并读取所有加密数据,甚至完全禁用 SSL(这被称为 BACKRONYM 漏洞,其页面非常搞笑)。此选项从第一天起就存在于 MariaDB 中,但在 MariaDB 5.5.44(发布于 2015 年 6 月 11 日)和 MariaDB 10.0.20(2015 年 6 月 18 日)中进一步加强,以拒绝不支持 SSL 的服务器,并且在 MariaDB 5.5.47(发布于 2015 年 12 月 10 日)、MariaDB 10.0.23(发布于 2015 年 12 月 18 日)和 MariaDB 10.1.10(发布于 2015 年 12 月 24 日?)中修复了底层主机名验证中的一个错误。
保持安全!
我安装了 10.1.14 版本,无法通过客户端与其建立 SSL 连接。我已将所有必要的字段添加到我的 my.cnf 文件中(尽管在我的版本中,由于某种原因,所有信息都在 my.cnf.backup 文件中),但没有成功。添加 ssl-verify-server-cert 无效。
您需要提供更多具体信息才能获得帮助,但可以查看 https://mariadb.com/kb/en/mariadb/secure-connections-overview/ 和 https://mariadb.com/kb/en/mariadb/configuring-mariadb-with-mycnf/ 以获取有关配置文件的详细信息,然后如果仍然无法使其工作,您可以提供有关失败的具体细节。