注册 登录
  • 欢迎访问"运维那点事",推荐使用Google浏览器访问,可以扫码关注本站的"微信公众号"。
  • 如果您觉得本站对你有帮助,那么可以扫码捐助以帮助本站更好地发展。

MySQL基于SSL复制的配置过程

MySQL 彭东稳 5438次浏览 已收录 0个评论

MySQL的主从复制默认是明文传送的,如果在生产环境中跨网络传送,数据的安全性就无法完全保证,为了解决这一问题,我们需要一种安全的方式进行传送,即基于SSL加密进行数据传输。在进行SSL加密传输时可能需要先了解CA、证书及SSL相关知识才能更好地明白为何基于SSL的传输就会更加安全。CA、证书及SSL相关知识在本章节不会多加一说明,详情可以看本博客提供的“信息安全之PKI及数字证书介绍”和“HTTPS协议和原理介绍”章节。

首先Master和Slave上分别检查SSL状态信息。

确保你看到的是disabled,而不是NO的选项。这表示你的mysql服务器支持ssl,只是没有在启动的时候开启ssl功能,当服务器启动ssl功能的时候,你会看到图中的disabled会显示yes。

下面需要开启支持SSL并设置加密方法,私钥文件等信息。

首先说明一点,我的实验环境把CA服务器、主服务器和从服务器都放在了同一台服务器上面。

1)配置CA服务器

下面是我自签证书时填写的信息:

2)Master服务器生成证书

3)CA为Master签署证书

PS:需要把证书(master.csr)和key(master.key)从Master服务器上复制到CA服务器上,然后在CA服务器签完证书后把证书master.crt再复制到Master服务器/data/mysql/ssl目录下(我这里是同台服务器,略过此步骤)。

4)Slave服务器生成证书

5)CA为Slave签署证书

PS:需要把证书(slave.csr)和key(slave.key)从Slave服务器上复制到CA服务器上,然后在CA服务器签完证书后把证书slave.crt再复制到Slave服务器/data/mysql/ssl目录下(我这里是同台服务器,略过此步骤)。

这里特别要注意一下,两个证书的签署是否成功。另外这几个证书的签署输入信息最好都一样。我这边由于主从都是在同一台机器上进行的,所以Common Name部分是一样的,所以我在为Slave签署证书时报错了,如下:

主要原因是因为两个证书的主机名一样导致的,解决办法把/etc/pki/CA/index.txt.attr这个文件中的unique_subject = yes改为unique_subject = no。就是不做唯一性限制。再或者把index.txt这个文件删除,然后新建一个。

我的环境是同一台服务器,所以现在我们来看一下相关的文件。

6)将CA证书复制到Master和Slave

7)Master和Slave配置SSL

master

slave

PS:把两个节点都重启一下。

然后再master上面应该会看到如下信息,如果have_openssl和have_ssl的值不为YES,那么你需要看一下错误日志中有什么报错信息(本人在做的时候就碰到了证书签署的时候有问题,导致ssl一直起不来)。

8)Master上创建复制用户

REQUIRE SSL表示此用户必须使用SSL连接。

9)Slave上连接Master配置

PS:需要注意的一点是,如果主从的SSL配置有问题,那么这个change master就会有问题的。

10)查看Slave状态信息

然后你可以在master写入数据,看看slave是否正常同步。

以上配置是MySQL 5.7之前的版本,从MySQL 5.7开始,配置SSL复制就更加简洁了。如果仔细阅读MySQL 5.7的安装文档INSTALL-BINARY,会发现5.7的安装文档在初始化数据目录之后还额外多做了一个操作,这是之前版本所没有的操作,而该步骤即是对于SSL的安装与配置。

运行完命令mysql_ssl_rsa_setup后会发现数据目录下多出了一些以pem结尾的文件,而这些文件就是开启SSL连接所需要的文件:

PS:如果你是yum安装,那么直接执行mysql_ssl_rsa_setup,就会在/var/log/mysql/目录下就会生成这些文件。

有了这些证书之后,就不需要再自己进行证书的创建了,省去很多事。比如我这里就可以直接把这些证书和key复制到指定的目录使用。

更详细的可以看这篇文章:MySQL 5.7客户端使用加密连接

然后我们也可以使用客户端直接连接测试SSL连接(MySQL 5.7默认就是使用SSL进行连接)。

然后就可以确认是否加密了。

我们可以看到SSL字段显示的加密方式为DHE-RSA-AES256-SHA。

如果没有加密,你看到的信息就为SSL: Not in use。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (2)or分享 (0)
关于作者:

您必须 登录 才能发表评论!