在MySQL的主从复制中,其传输过程是明文传输,并不能保证数据的安全性,在编译安装Mysql时,基本上都会加上一个 --with-openssl这
在MySQL的主从复制中,其传输过程是明文传输,并不能保证数据的安全性,在编译安装Mysql时,基本上都会加上一个 --with-openssl这样的选项,即表示支openssl加密传输协议,因此就可以为mysql配置基于ssl加密传输啦。
规划:
Master:
IP地址:172.16.4.111
MySQL版本:5.5.20
操作系统:RHEL5.4
Slave:
IP地址:172.16.4.112
MySQL版本:5.5.20
操作系统:RHEL5.4
由于使用了ssl加密传输协议,即意味着,在传输之前,主从服务器是要进行互相认证的,因此要为两台服务器准备各自的证书,私钥,以及为其颁发证书的CA的证书,明晰了这些,就先为两台服务器准备私钥,证书。这里需要将Master配置为一台CA服务器,方便为主从服务器颁发证书。ps:将服务器配置为CA服务器,详见:Openssl的用法(搭建CA服务器)
一、设置主从服务
在172.16.4.111服务器上
编辑/etc/my.cnf
#vim /etc/my.cnf
将serier_id修改为11
server_id=11 #修改server_id=11
log_bin=mysql-bin #开启二进制日志
sync_binlog=1 #任何一个事务提交之后就立即写入到磁盘中的二进制文件
innodb_flush_logs_at_trx_commit=1 #任何一个事物提交之后就立即写入到磁盘中的日志文件
保存退出
启动mysql
#service mysqld start
在172.16.4.112服务器上
编辑/etc/my.cnf
#vim /etc/my.cnf
server_id=12 #修改server_id=12
#log-bin #注释掉log-bin,从服务器不需要二进制日志,因此将其关闭
relay-log=mysql-relay #定义中继日志名,开启从服务器中继日志
relay-log-index=mysql-relay.index #定义中继日志索引名,开启从服务器中继索引
read_only=1 #设定从服务器只能进行读操作,不能进行写操作
保存退出
启动mysql
#service mysqld start
二、准备证书,私钥
1、配置Master为CA服务器
#vim /etc/pki/tls/openssl.cnf
将 dir = ../../CA修改为
dir = /etc/pki/CA
#(umask 077;openssl genrsa 2048 > private/cakey.pem)
#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
#mkdir certs crl newcerts
#touch index.txt
#echo 01 > serial
2、为Master上的Mysql准备私钥以及颁发证书
#mkdir /usr/local/mysql/ssl
#cd ssl/
#(umask 077;openssl genrsa 1024 > mysql.key)
#openssl req -new -key mysql.key -out mysql.csr
#openssl ca -in mysql.csr -out mysql.crt
#cp /etc/pki/CA/cacert.pem /usr/local/mysql/ssl/
#chown -R mysql.mysql ssl/
3、为Slave上的Mysql准备私钥以及申请证书
#mkdir /usr/local/mysql/ssl
#cd ssl/
#(umask 077;openssl genrsa 1024 > mysql.key)
#openssl req -new -key mysql.key -out mysql.csr
#scp ./mysql.csr 172.16.4.111:/root
4、在Master上为Slave签发证书
#cd
#openssl ca -in mysql.csr -out mysql.crt
#scp ./mysql.crt 172.16.4.112:/usr/local/mysql/ssl
#cd /etc/pki/CA
#scp ./cacert.pem 172.16.4.112:/usr/local/mysql/ssl
到此证书以及私钥已经准备好,,请确认在Master以及Slave的/usr/local/mysql/ssl目录下具有以下文件,以及属主和属组: