一. 创建证书
创建证书路径
mkdir -p /opt/ssl
使用自签证书和密钥
根证书
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 36500 -key ca-key.pem -out ca.pem
服务端证书
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 36500 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
客户端证书
openssl req -newkey rsa:2048 -days 36500 -nodes -keyout client-key.pem -out client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 36500 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
其中创建根证书ca.pem,服务器端证书server-req.pem,客户端证书 client-req.pem的时候需要设置不同的Common Name,如果设置了相同的名字Mariadb客户端无法登录。
共得到8 个文件
验证可用性
openssl verify -CAfile ca.pem server-cert.pem client-cert.pem
二. 服务器端配置
vim /etc/my.cnf
[mariadb]中添加配置
[mariadb]
ssl
ssl-ca=/opt/ssl/ca.pem
ssl-cert=/opt/ssl/server-cert.pem
ssl-key=/opt/ssl/server-key.pem
重启mariadb服务
systemctl restart mariadb
进入数据库检查ssl
show variables like '%ssl%';
如果重启失败或发现have_ssl是 DISABLE,查看错误日志进行排查。
三. 客户端配置
先在服务器端设置一个用来进行ssl同步的用户
GRANT REPLICATION SLAVE ON *.* TO 'admin'@'客户端ip' IDENTIFIED BY 'admin' REQUIRE SSL;
将生成客户端的证书,公私钥复制到客户端的/opt/ssl/中
在客户端使用这个用户进行登录验证
mariadb --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -h服务器端ip -uadmin -padmin
正常进入数据库证明通过认证。可以使用这个用户进行数据同步
客户端配置和服务器端步骤相同
vim /etc/my.cnf
[mariadb]中添加配置
[mariadb]
ssl
ssl-ca=/opt/ssl/ca.pem
ssl-cert=/opt/ssl/server-cert.pem
ssl-key=/opt/ssl/server-key.pem
重启数据库服务
四. 主从同步验证
将客户端的mariadb服务作为从服务器验证数据同步是否正常
进入服务器端数据库查看信息
show master status;
记录File和Position的参数
进入客户端数据库进行主从设置
stop slave;
CHANGE MASTER TO MASTER_HOST='服务器ip', MASTER_USER='admin', MASTER_PASSWORD='admin', MASTER_LOG_FILE='db-binlog.000006', MASTER_LOG_POS=729, MASTER_SSL=1, MASTER_SSL_CA = '/opt/ssl/ca.pem', MASTER_SSL_CERT = '/opt/ssl/client-cert.pem', MASTER_SSL_KEY = '/opt/ssl/client-key.pem'
start slave;
show slave status\G
主从状态正常。验证同步
在服务器端新建库或者插入一些测试数据,查看客户端是否有相同的数据生成
主数据库
从数据库
如果你觉得文章还不错,请大家 点赞、分享、留言下!我还为大家准备了学习资料,感兴趣的小伙伴快来找我领取一起交流学习哦!