问题描述:
数据库数据库配置have_ssl参数为disabled,未对远程访问提供ssl连接,无法保证重要数据在传输过程中的完整性。
问题分析:
数据库数据库配置have_ssl参数为disabled,未对远程访问提供ssl连接,无法保证重要数据在传输过程中的完整性。
危害分析:
数据库可能导致重要数据在传输过程中被攻击者劫持、篡改,使传输数据的完整性遭到破坏。
相当我们数据库访问需要用ssl进行访问
数据库:mysql5.7
操作系统:winserver2012
操作步骤:
-
确保 MySQL 5.7 已安装(建议使用官方 MSI 安装包,默认可能包含 SSL 支持)。
-
验证 MySQL 是否支持 SSL:登录 MySQL 后执行以下命令,若
have_ssl为DISABLED或NO,则需要配置;若为YES则已启用。SHOW VARIABLES LIKE 'have_ssl';
配置步骤
1. 生成 SSL 证书和密钥
MySQL 提供 mysql_ssl_rsa_setup 工具(位于 MySQL 安装目录的 bin 文件夹下,如 C:\Program Files\MySQL\MySQL Server 5.7\bin),用于生成所需证书。
-
以管理员身份打开命令提示符 ,进入 MySQL 的
bin目录:"C:\Program Files\MySQL\MySQL Server 5.7\bin"
生成证书 (指定存储目录,建议使用 MySQL 数据目录,如 C:\ProgramData\MySQL\MySQL Server 5.7\data):
mysql_ssl_rsa_setup --datadir="C:\ProgramData\MySQL\MySQL Server 5.7\data"
执行成功后,数据目录会生成以下文件:
ca.pem(根证书)server-cert.pem(服务器证书)server-key.pem(服务器私钥)client-cert.pem(客户端证书)client-key.pem(客户端私钥)- 2. 配置 MySQL 服务器启用 SSL 编辑 MySQL 配置文件
my.ini(通常位于C:\ProgramData\MySQL\MySQL Server 5.7或安装目录的my.ini),在[mysqld]段落添加以下配置:
[mysqld]
# 启用 SSL
ssl=ON
# 指定证书路径(使用实际生成证书的目录)
ssl-ca="C:/ProgramData/MySQL/MySQL Server 5.7/data/ca.pem"
ssl-cert="C:/ProgramData/MySQL/MySQL Server 5.7/data/server-cert.pem"
ssl-key="C:/ProgramData/MySQL/MySQL Server 5.7/data/server-key.pem"
3. 重启 MySQL 服务
- 打开 服务 管理器(
services.msc),找到MySQL57服务,右键 重启。 - 验证配置是否生效:登录 MySQL 后执行:
SHOW VARIABLES LIKE 'have_ssl'; -- 应返回 YES
SHOW VARIABLES LIKE 'ssl%'; -- 确认证书路径正确
4. 配置客户端强制使用 SSL 连接
(可选但推荐)为确保客户端通过 SSL 连接,可对数据库用户设置强制 SSL 权限:
*
-- 为现有用户开启强制 SSL(替换 username 和 host)
ALTER USER 'username'@'host' REQUIRE SSL;
-- 创建新用户时强制 SSL
CREATE USER 'new_user'@'host' IDENTIFIED BY 'password' REQUIRE SSL;
GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'host';
FLUSH PRIVILEGES;
按以上步骤完成。如果在生成证书步骤会出现Could not find OpenSSL on the system
- 需要安装openssl1.1.1安装后再重新生成证书。现在1.1.1版本有点难找