美文网首页
MySQL之:复制加密

MySQL之:复制加密

作者: Simon_Ye | 来源:发表于2020-04-03 19:57 被阅读0次

基于 SSL 复制

在默认的主从复制过程或远程连接到 MySQL/MariaDB所有的链接通信中的数据都是文明的,外网里访问数据或者复制,存在安全隐患。通过 SSL/TLS 加密的方式进行复制的方法,来进一步提高数据的安全性

配置实现:

参看:https://mariadb.com/kb/en/library/replication-with-secure-connections/

  • 主服务器开启 SSL:
    [mysqld] 加一行 ssl
  • 主服务器配置证书和私钥;并且创建一个要求必须使用 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
# 创建加密账号
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
    

相关文章

网友评论

      本文标题:MySQL之:复制加密

      本文链接:https://www.haomeiwen.com/subject/ctnkphtx.html