当mysql跨越互联网进行复制时别人可以窃取到mysql的复制信息,这些信息是明文的,因此存在不安全性,这里通过ssl对复制的信息进行加密。当在客户没有固定ip而要访问服务器时,mysql要允许任意地址的访问,服务端和客户端通过证书验证可以防止暴力破解。
开始之前让我们先来回顾一下SSL协议客户端OpenSSL的安装过程:
安装openssl
|
mkdir /test/setup
cd /test/setup
tar zxvf openssl-0.9.8b.tar.gz
cd openssl-0.9.8b
./config
make && make install
|
开启mysql中ssl功能
登录Mysql查看
|
mysql> show variables like '%ssl%';
|
|
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_key | |
+---------------+----------+
|
如果mysql输出如上所述,那么继续操作开启ssl;如果不是,重新编译安装mysql,注意生成makefile时填写参数正确。
退出mysql,编辑/etc/my.cnf
在[mysqld]和[mysqldump]之间,加入下列配置信息:
保存后重新启动mysql,再次登录mysql
|
mysql -uroot -p
mysql> show variables like '%ssl%';
|
|
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_key | |
+---------------+-------+
|
好了,下面进入正题:
mysql基于ssl复制
1、创建证书中心
在主服务器上创建证书中心
生成私钥
|
(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
|
生成自签证书,由于需要输入大量用户信息,因此编辑证书的配置文件,在私有的CA上创建证书要注意所有的用户信息要和CA中的一致,从国家到部门都要相同,否则会造成证书无法使用
|
vim /etc/pki/tls/openssh.cnf
|
|
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CN
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrpovinceName_default = FJ
localityName = Locality Name (eg,city)
localityName = FZ
O.organizationName = Organization Name (eg,company)
O.organizationName_default = zdz
organizationalUnitName = Organizational Unit Name (eg,section)
organizationalUnitName_default = zdz
|
生成自签证书
|
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
|