所以我有我的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
1条答案
按热度按时间b0zn9rqh1#
ssl_ca
和ssl_cipher
都不是状态变量,而是只读全局变量。无法找到它们,因此将返回空结果集。SHOW VARIABLES LIKE 'ssl_ca'
应该返回配置文件中定义的/etc/mysql/cacert.pem
。SHOW VARIABLES LIKE 'ssl_cipher'
应该返回一个空字符串,因为你没有定义一个密码。要检查当前连接使用的密码,您可以使用命令行客户端中的status命令(
\s
)或使用客户端API函数(例如mysql_get_ssl_cipher in C)