Mysql配置ssl证书

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql配置ssl证书相关的知识,希望对你有一定的参考价值。

本环境基于mysql5.6配置,通过openssl生成证书进行配置

一、确认环境信息

1、查看数据库版本

mysql> select version();

+-----------+

| version() |

+-----------+

| 5.6.36 |

+-----------+

2、查看数据库是否支持ssl配置

mysql> show variables like ‘have%ssl%‘;

+---------------+----------+

| Variable_name | Value |

+---------------+----------+

| have_openssl | DISABLED |

| have_ssl | DISABLED |

+---------------+----------+

2 rows in set (0.00 sec)

3、查看数据库端口号

mysql> show variables like ‘port‘;

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| port | 3306 |

+---------------+-------+

1 row in set (0.00 sec)

4、查看数据库数据存放路径

mysql> show variables like ‘datadir‘;

+---------------+-------------------+

| Variable_name | Value |

+---------------+-------------------+

| datadir | /data/mysql/data/ |

+---------------+-------------------+

1 row in set (0.00 sec)

二、证书配置

通过openssl 制作生成 SSL 证书(有效期99999)

1、生成一个 CA 私钥
[root@itop ~]#openssl genrsa 2048 > ca-key.pem
技术图片

2、通过 CA 私钥生成数字证书
[root@itop ~]# openssl req -new -x509 -nodes -days 99999 -key ca-key.pem -out ca.pem
技术图片

3、创建 MySQL 服务器 私钥和请求证书
[root@itop ~]# openssl req -newkey rsa:2048 -days 99999 -nodes -keyout server-key.pem -out server-req.pem
技术图片

4、将生成的私钥转换为 RSA 私钥文件格式
[root@itop ~]# openssl rsa -in server-key.pem -out server-key.pem
技术图片

5、用CA 证书来生成一个服务器端的数字证书
[root@itop ~]# openssl x509 -req -in server-req.pem -days 99999 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
技术图片

6、创建客户端的 RSA 私钥和数字证书

[root@itop ~]# openssl req -newkey rsa:2048 -days 99999 -nodes -keyout client-key.pem -out client-req.pem
技术图片

7、将生成的私钥转换为 RSA 私钥文件格式

[root@itop ~]# openssl rsa -in client-key.pem -out client-key.pem
技术图片

8、用CA 证书来生成一个客户端的数字证书

[root@itop ~]# openssl x509 -req -in client-req.pem -days 99999 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
技术图片

9、查看所有生成的SSL文件

[root@itop ~]# ll *.pem
技术图片

三、数据库配置SSL证书

1、复制 CA 证书和服务端SSL文件至MySQL 数据目录

[root@itop ~]# cp ca.pem server-*.pem /data/mysql/data –v
技术图片

2、修改 MySQL 数据目录的CA 证书和服务端 SSL 文件所属用户与组

[root@itop ~]# chown -v mysql.mysql /data/mysql/data/{ca,server*}.pem
技术图片

3、修改MYSQL配置文件,添加SSL调用配置【/etc/my.cnf】

vi /etc/my.cnf
技术图片

4、重启MYSQL服务,并检查数据库SSL是否开启状态

注:have_openssl 与 have_ssl 值都为YES表示ssl开启成功

[root@itop ~]# /etc/init.d/mysqld restart

技术图片

mysql> show variables like ‘have%ssl%‘;

技术图片

四、测试SSL可用性

1、创建用户并指定SSL连接

mysql> grant all on . to ‘test‘@‘%‘ identified by ‘p@ssw0rd‘ require SSL;
技术图片

2、通过密码连接测试

[root@itop ~]# mysql -utest -pp@ssw0rd -h 192.168.1.110
技术图片

3、通过客户端密钥与证书SSL + 密码连接测试,并查看属性

[root@itop ~]# mysql -utest -pp@ssw0rd -h 192.168.1.110 --ssl-cert=client-cert.pem --ssl-key=client-key.pem

技术图片

mysql> s

技术图片

以上是关于Mysql配置ssl证书的主要内容,如果未能解决你的问题,请参考以下文章

如何配置MySQL SSL

具有指定证书的 Java MySQL SSL 连接

使用 Hibernate、Spring 和 JDBC 配置 SSL 证书

linux phpstudy怎样安装ssl证书

phpstudy如何安装ssl证书

基于 SSL 的 PHP MySQL。对等证书不匹配