推荐答案
在 MariaDB 中配置 SSL/TLS 的步骤如下:
生成 SSL/TLS 证书和密钥:
- 使用 OpenSSL 生成 CA 证书、服务器证书和客户端证书。
- 确保私钥文件权限设置为仅限所有者访问。
配置 MariaDB 服务器:
- 在
my.cnf
或my.ini
文件中添加以下配置:[mysqld] ssl-ca=/path/to/ca-cert.pem ssl-cert=/path/to/server-cert.pem ssl-key=/path/to/server-key.pem
- 重启 MariaDB 服务以应用更改。
- 在
验证 SSL/TLS 配置:
- 使用以下命令检查 SSL/TLS 是否已启用:
SHOW VARIABLES LIKE '%ssl%';
- 确保
have_ssl
变量的值为YES
。
- 使用以下命令检查 SSL/TLS 是否已启用:
配置客户端连接:
- 在客户端连接时,指定 SSL/TLS 证书和密钥:
mysql --ssl-ca=/path/to/ca-cert.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem -h hostname -u username -p
- 在客户端连接时,指定 SSL/TLS 证书和密钥:
强制使用 SSL/TLS:
- 可以通过配置用户权限来强制使用 SSL/TLS:
GRANT USAGE ON *.* TO 'username'@'hostname' REQUIRE SSL; FLUSH PRIVILEGES;
- 可以通过配置用户权限来强制使用 SSL/TLS:
本题详细解读
1. 生成 SSL/TLS 证书和密钥
在配置 SSL/TLS 之前,首先需要生成所需的证书和密钥。通常,这包括一个 CA 证书、一个服务器证书和一个客户端证书。可以使用 OpenSSL 工具来生成这些文件。
-- -------------------- ---- ------- - -- -- ----- ------- ------ ---- - ---------- ------- --- ---- ----- ------ ----- ------ ---- ---------- ---- ----------- - ---------- ------- --- ------- -------- ----- ------ ------ ------- -------------- ---- -------------- ------- ---- ---- --- -------------- ----- ------ --- ----------- ------ ---------- ----------- -- ---- --------------- - ---------- ------- --- ------- -------- ----- ------ ------ ------- -------------- ---- -------------- ------- ---- ---- --- -------------- ----- ------ --- ----------- ------ ---------- ----------- -- ---- ---------------
2. 配置 MariaDB 服务器
在生成证书和密钥后,需要在 MariaDB 的配置文件中指定这些文件的路径。通常,配置文件位于 /etc/my.cnf
或 /etc/mysql/my.cnf
。
[mysqld] ssl-ca=/path/to/ca-cert.pem ssl-cert=/path/to/server-cert.pem ssl-key=/path/to/server-key.pem
配置完成后,重启 MariaDB 服务以应用更改。
sudo systemctl restart mariadb
3. 验证 SSL/TLS 配置
配置完成后,可以通过以下 SQL 命令验证 SSL/TLS 是否已成功启用:
SHOW VARIABLES LIKE '%ssl%';
如果 have_ssl
变量的值为 YES
,则表示 SSL/TLS 已成功启用。
4. 配置客户端连接
客户端在连接 MariaDB 服务器时,需要指定 SSL/TLS 证书和密钥。可以通过命令行或客户端配置文件来实现。
mysql --ssl-ca=/path/to/ca-cert.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem -h hostname -u username -p
5. 强制使用 SSL/TLS
为了确保所有连接都使用 SSL/TLS,可以通过配置用户权限来强制要求 SSL/TLS。
GRANT USAGE ON *.* TO 'username'@'hostname' REQUIRE SSL; FLUSH PRIVILEGES;
这样,只有使用 SSL/TLS 的连接才能成功连接到 MariaDB 服务器。