我的本地主机在 Win64 上运行 MariaDB 10.6.7。
我试图在连接到 MariaDB 时强制 SSL。我使用 MySQL Workbench 8.0 测试连接。
要启用 SSL,我执行了以下操作:
- 我生成自签名证书,然后在 my.ini 中设置以下内容:
[mysqld]
datadir=C:/xampp/MariaDB 10.6/data
port=3306
innodb_buffer_pool_size=1009M
ssl-ca=C:/xampp/xampp/certs/mysql/ca-cert.pem
ssl-cert=C:/xampp/xampp/certs/mysql/server-cert.pem
ssl-key=C:/xampp/xampp/certs/mysql/server-key.pem
[client]
port=3306
plugin-dir=C:/Program Files/MariaDB 10.6/lib/plugin
ssl-ca=C:/xampp/xampp/certs/mysql/ca-cert.pem
ssl-cert=C:/xampp/xampp/certs/mysql/client-cert.pem
ssl-key=C:/xampp/xampp/certs/mysql/client-key.pem
- 为了强制 SSL,我将 MariaDB 中的用户设置为需要 SSL。
不幸的是,通过这种配置,我仍然可以在不使用任何证书的情况下连接到 MySQL。如何强制 MariaDB 强制 SSL 或失败?
我的第二个问题,我怀疑我的配置实际上是为了使用 Require X509 进行设置。是这样吗?如果是,我如何将其设置为仅使用 Require SSL?
最后,在 my.ini 中设置证书,阻止我通过常规方式连接到 mysql,即:mysql -u root。我收到以下错误:
ERROR 2026 (HY000): SSL connection error: An unknown error occurred while processing
the certificate. Error 0x80090327(SEC_E_CERT_UNKNOWN).
我尝试使用以下命令 mysql --ssl-ca=[directory]\client-cert.pem -u root,但没有成功。我得到了和上面一样的错误。任何想法?
如果您有参考页面或任何形式的见解,将不胜感激。
谢谢。
回答1
创建用户时,需要添加require参数,可以是x509或者ssl。
举个例子
创建由 'root' 标识的用户 itpuxs2@'%' 需要 x509;
创建由 'root' 标识的用户 itpuxs3@'%' require ssl;
回答2
根据我在 Win64 中的测试,“需要 SSL”不需要 [client] 下的 ssl-ca、ssl-cert、ssl-key。这个设置也是我无法使用“mysql -u root”登录的原因。
我使用 MySQL Workbench 来测试我与 MariaDB 的连接。根据我的测试,即使我没有提供任何证书,只要服务器有 SSL 的证书,那么连接就会被加密(需要 SSL)。话虽如此,我确实尝试提供一个 ca-cert.pem,但它不起作用。从我在谷歌的研究来看,这似乎是由于 MariaDB 中使用的 SSL 库。 SSL 库对于不同的发行版可能不同。
至于 X509,我能够让它在 Linux 中运行。我这样做了一次并且没有做进一步的测试,因为我现在在 Windows 中工作。