一、mysql_ssl_rsa_setup简介

  mysql5.7之前的版本是不提供ssl安全连接的,其在网络中数据都是以明文进行传输的。mysql_ssl_rsa_setup程序用于创建 SSL 证书和密钥文件以及 RSA 密钥对文件,以支持使用 SSL 的安全连接和使用 RSA 通过未加密连接的安全密码交换(如果这些文件丢失)。 如果现有的 SSL 文件已经过期,mysql_ssl_rsa_setup也可用于创建新的 SSL 文件。MySQL5.7默认是开启SSL连接,如果强制用户使用SSL连接,那么应用程序的配置也需要明确指定SSL相关参数,否则程序会报错。
  环境说明:如下命令示例mysql版本为5.7.32。

二、加密连接配置和使用

1、检查是否启用了ssl安全连接

mysql> show variables like ‘%ssl%’;
在这里插入图片描述
在这里插入图片描述

2、创建证书及密钥

#执行创建证书命令前先停止msyql实例
[wuhs@s145 mysql5.7]$ ./bin/mysql_ssl_rsa_setup --datadir=/home/wuhs/data --verbose
在这里插入图片描述
在这里插入图片描述

3、查看证书和密钥文件清单

[wuhs@s145 data]$ ll *.pem
-rw-------. 1 wuhs wuhs 1679 Dec 24 14:50 ca-key.pem
-rw-r–r--. 1 wuhs wuhs 1107 Dec 24 14:50 ca.pem
-rw-r–r--. 1 wuhs wuhs 1107 Dec 24 14:50 client-cert.pem
-rw-------. 1 wuhs wuhs 1675 Dec 24 14:50 client-key.pem
-rw-------. 1 wuhs wuhs 1675 Dec 24 14:50 private_key.pem
-rw-r–r--. 1 wuhs wuhs 451 Dec 24 14:50 public_key.pem
-rw-r–r--. 1 wuhs wuhs 1107 Dec 24 14:50 server-cert.pem
-rw-------. 1 wuhs wuhs 1675 Dec 24 14:50 server-key.pem

4、创建一个要求ssl连接的用户

#强制用户使用ssl连接登录时加上选项REQUIRE SSL
mysql> create user ‘test’@’%’ identified by ‘test@1234’ REQUIRE SSL;
Query OK, 0 rows affected (0.00 sec)

5、客户端连接测试

通过Navicat客户端连接测试,必须勾选ssl才可以连接成功
在这里插入图片描述
在这里插入图片描述

6、DBA账户本地登录测试

#root账户没有配置强制ssl登录,默认使用ssl登录
在这里插入图片描述
在这里插入图片描述

三、mysql_ssl_rsa_setup命令简介

1、使用语法

mysql_ssl_rsa_setup [options]
#典型的选项是 --datadir指定创建文件的位置,以及 --verbose查看mysql_ssl_rsa_setup执行的 openssl命令 。

2、参数说明

参数选项参数说明
-d, --datadir=name数据目录路径
-?, --help显示帮助信息并退出
-s, --suffix=name X.509证书通用名称属性的后缀
–uid=name用于文件权限的有效用户的名称
-v, --verbose详细模式
-V, --version显示版本信息并退出

3、生成文件清单及说明

证书文件文件说明
ca-key.pemCA私钥
ca.pem自签的CA证书,客户端连接也需要提供
client-cert.pem客户端连接服务器端需要提供的证书文件
client-key.pem客户端连接服务器端需要提供的私钥文件
private_key.pem私钥/公钥对的私有成员
public_key.pem私钥/公钥对的共有成员
server-cert.pem服务器端证书文件
server-key.pem服务器端私钥文件

4、ssl-mode模式说明

  • 在没有–ssl-mode选项的情况下 ,客户端尝试使用加密进行连接,如果无法建立加密连接,则回退到未加密的连接。这也是具有显式–ssl-mode=PREFFERED选项的行为 。
  • 使用–ssl-mode=REQUIRED,客户端需要加密连接,如果无法建立连接则失败。
  • 使用–ssl-mode=DISABLED,客户端使用未加密的连接。
  • 使用–ssl-mode=VERIFY_CA或 --ssl-mode=VERIFY_IDENTITY,客户端需要加密连接,并且还针对服务器 CA 证书和(使用 VERIFY_IDENTITY)针对其证书中的服务器主机名执行验证。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐