使用 SSL 与 MySQL 建立安全连接
MySQL 启用 SSL
首先,使用以下命令查看当前 MySQL 是否已启用 SSL:
show variables like '%ssl%';
查看结果中 have_openssl
和 have_ssl
的值。如果为 DISABLED
,表示 SSL 未启用。接下来,可以按照以下步骤开启 SSL:
1. 生成 SSL 证书
要启用 SSL,首先需要生成 SSL 证书和密钥文件。可以使用 mysql_ssl_rsa_setup
命令来快速生成:
# 使用 --datadir 参数指定证书和密钥的存放位置,注意确保目录的存在
mysql_ssl_rsa_setup --datadir=/var/lib/mysql/ssl
此命令将在指定目录(如 /var/lib/mysql/ssl)下生成以下文件:
- ca.pem:CA 证书
- server-cert.pem 和 server-key.pem:服务器证书和密钥
- client-cert.pem 和 client-key.pem:客户端证书和密钥
注意:确保生成的 SSL 证书和密钥文件可被 MySQL 访问。
2. 配置 MySQL
生成证书后,需要在 MySQL 配置文件中启用 SSL 支持。编辑 MySQL 配置文件(通常是 my.cnf 或 my.conf):
# 在 [mysqld] 启用 SSL
[mysqld]
ssl-ca = /var/lib/mysql/ssl/ca.pem
ssl-cert = /var/lib/mysql/ssl/server-cert.pem
ssl-key = /var/lib/mysql/ssl/server-key.pem
# 可选:在 [client] 配置客户端默认使用 SSL
[client]
ssl-ca = /var/lib/mysql/ssl/ca.pem
ssl-cert = /var/lib/mysql/ssl/client-cert.pem
ssl-key = /var/lib/mysql/ssl/client-key.pem
3. 重启 MySQL 服务
在修改配置文件后,重启 MySQL 以应用更改:
systemctl restart mysql
重启完成后,可以再次使用 show variables like '%ssl%';
命令确认 SSL 是否成功启用。
客户端使用 SSL 连接 MySQL
在客户端连接数据库时,需指定 SSL 相关的参数。以下是带有 SSL 选项的连接字符串示例:
mysql://username:password@host/dbname?ssl-ca=/var/lib/mysql/ssl/ca.pem&ssl-cert=/var/lib/mysql/ssl/client-cert.pem&ssl-key=/var/lib/mysql/ssl/client-key.pem