为什么没有为MariaDB服务器设置Ssl_ca / CA权限?

rdrgkggo  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(99)

所以我有我的MariaDB服务器版本:10.6.12-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04.
我想做的是使用单向TLS。如果我理解正确的话,这意味着我的MariaDB服务器使用受信任方颁发的证书来识别自己。当然,客户端必须使用用户名和密码来标识自己,但不使用任何证书。我希望这种单向TLS连接完美无瑕,其中服务器CA证书也得到了积极验证。
我遇到的问题是,虽然连接工作,似乎是TLS加密,CA证书似乎是失踪。我观察到的是(1)当我从家里使用我的DBeaver客户端连接时,我得到了Ssl_ca状态,给出了一个空的响应,(2)当我使用phpMyAdmin连接时,它说“SSL是在没有证书授权的情况下使用的”。我实在不明白为何会出现这种情况。你能看出这里可能出了什么问题,或者我在这里做错了什么吗?如果您需要更多信息,请告诉我。

SHOW STATUS LIKE 'Ssl_ca'; ##Returns empty

(1)我已经在 "/etc/mysql/mariadb.conf.d/50-server.cnf” 中设置了SSL设置,以指向来自可信证书提供商的具有密钥和根证书链的证书。

[mysqld]
ssl_ca = /etc/mysql/cacert.pem ##Two root certificates that I got from provider
ssl_cert = /etc/mysql/server-cert.pem ##Certificate issued by trusted provider
ssl_key = /etc/mysql/server-key.pem ##Key for the certificate
require-secure-transport = on

(2)权限和所有权正常,
(3)文件路径正常,
(4)MariaDB正确启动和重启
(5)根证书属于证书

openssl verify -CAfile /etc/mysql/cacert.pem /etc/mysql/server-cert.pem ##Returns OK

(6)颁发的证书是X509格式,
(7)REQUIRE SSL已为我的远程连接用户启用,

openssl x509 -text -noout -in /etc/mysql/server-cert.pem ##Returns description of certificate

(8)远程用户连接到:使用SSL:Y,需要SSL:是,验证服务器证书:Y,任何特定的客户端证书集:N的。
(9)远程连接一切正常
(10)Ssl_cipher的值为:TLS_AES_256_GCM_SHA384

SHOW STATUS LIKE 'Ssl_cipher';

(11)从客户端服务器检查OpenSSL,它显示我的证书与正确的证书链。

openssl s_client -connect my.server.randomtld:3306 -starttls mysql

(12)防火墙一切正常我早就过了那个阶段了

iptables -D INPUT -p tcp --dport 3306 -j DROP
sudo iptables -A INPUT -p tcp --dport 3306 -s 111.111.111.111 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -s 222.222.222.222 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j DROP
b0zn9rqh

b0zn9rqh1#

ssl_cassl_cipher都不是状态变量,而是只读全局变量。无法找到它们,因此将返回空结果集。

  • SHOW VARIABLES LIKE 'ssl_ca'应该返回配置文件中定义的/etc/mysql/cacert.pem
  • SHOW VARIABLES LIKE 'ssl_cipher'应该返回一个空字符串,因为你没有定义一个密码。

要检查当前连接使用的密码,您可以使用命令行客户端中的status命令(\s)或使用客户端API函数(例如mysql_get_ssl_cipher in C)

相关问题