推荐答案
在 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 工具来生成这些文件。
// www.javascriptcn.com code example # 生成 CA 私钥和证书 openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem # 生成服务器私钥和证书 openssl req -newkey rsa:2048 -days 365000 -nodes -keyout server-key.pem -out server-req.pem openssl x509 -req -in server-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem # 生成客户端私钥和证书 openssl req -newkey rsa:2048 -days 365000 -nodes -keyout client-key.pem -out client-req.pem openssl x509 -req -in client-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
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 服务器。