基于 SSL 復制
在默認的主從復制過程或遠程連接到 MySQL/MariaDB所有的鏈接通信中的數(shù)據(jù)都是文明的,外網里訪問數(shù)據(jù)或者復制鸯檬,存在安全隱患哗伯。通過 SSL/TLS 加密的方式進行復制的方法孕讳,來進一步提高數(shù)據(jù)的安全性
配置實現(xiàn):
參看:https://mariadb.com/kb/en/library/replication-with-secure-connections/
- 主服務器開啟 SSL:
[mysqld] 加一行 ssl - 主服務器配置證書和私鑰尉间;并且創(chuàng)建一個要求必須使用 SSL 連接的復制賬號
- 從服務器使用 CHANGE MASTER TO 命令時指明 ssl 相關選項
步驟
搭建CA
my.cnf.d/ssl]# openssl genrsa 2048 > cakey.pem
my.cnf.d/ssl]# openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650
給 master 一次性生成私鑰文件和證書申請文件,并且CA進行簽名:
my.cnf.d/ssl]# openssl req -newkey rsa:2048 -days 365 -nodes -keyout master.key > master.csr
my.cnf.d/ssl]# openssl -req x509 -in master.csr -CA cacert.pem -CAkey cakey.pem -set_serial 01 > master.crt
給 slave 一次性生成私鑰文件和證書申請文件社证,并且CA進行簽名:
my.cnf.d/ssl]# openssl req -newkey rsa:2048 -days 365 -nodes -keyout slave.key > slave.csr
my.cnf.d/ssl]# openssl -req x509 -in slave.csr -CA cacert.pem -CAkey cakey.pem -set_serial 02 > slave.crt
驗證證書:
my.cnf.d/ssl]# openssl verify -CAfile cacert.pem master.crt slave.crt
分別復制相應文件給主和從服務器
- 主服務器:
cacert.pem
master.key
master.crt - 從服務器:
cacert.pem
slave.key
slave.crt
在 Master 服務器上配置
[mysqld]
log_bin
server_id=1
ssl
ssl-ca=/etc/my.cnf.d/ssl/cacert.pem
ssl-cert=/etc/my.cnf.d/ssl/master.crt
ssl-key=/etc/my.cnf.d/ssl/master.key
# 創(chuàng)建加密賬號
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.30.%' IDENTIFIED BY 'centos' REQUIRE ssl;
在 Slave 服務器上配置
- 方法1:
~]# vim /etc/my.cnf [mysqld] server_id=2 ssl ssl-ca=/etc/my.cnf.d/ssl/cacert.pem ssl-cert=/etc/my.cnf.d/ssl/slave.crt ssl-key=/etc/my.cnf.d/ssl/slave.key
- 方法2:
mysql> CHANGE MASTER TO MASTER_HOST='MASTERIP', MASTER_USER='rep', MASTER_PASSWORD='centos', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG-POS=245, MASTER_SSL=1, MASTER_SSL_CA='/etc/my.cnf.d/ssl/cacert.pem', MASTER_SSL_CERT='/etc/my.cnf.d/ssl/slave.crt', MASTER_SSL_KEY='/etc/my.cnf.d/ssl/slave.key'; ~]# vim /etc/my.cnf [mysqld] server_id=2 ssl