基于keepalived实现mysql双主
MySQL服务端开启SSL保证连接通道的安全性,同时可支持开启证书双向认证,进一步提升安全。
服务端配置
这里通过openssl命令来生成自签名证书。
第1步,生成CA证书:
1 | openssl genrsa 2048 > ca-key.pem |
第2步,通过CA证书签发服务证书:
1 | openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem |
第3步,通过CA证书签发客户端证书:
1 | openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem > client-req.pem |
第4步,修改MySQL服务配置/etc/my.cnf
,添加或更新如下内容:
1 | [mysqld] |
然后重启MySQL服务即完成了服务端的配置。
客户端配置
这里说明Java的JDBC客户端怎样通过SSL方式连接MySQL,并开启证书双向认证。
1 | // SSL Mode |
证书校验模式
总共5中校验模式,安全等级逐级提升。
- No(sslMode=DISABLED)
不开启SSL连接通道,直接明文传输。
- Preferred(sslMode=PREFERRED)
自动先尝试用SSL连接,如果MySQL服务端不支持SSL就退回到明文传输。不校验证书和主机名。
- Require(sslMode=REQUIRED)
总是使用SSL连接,如果MySQL服务端不支持SSL,连接中断。不校验证书和主机名。
- Require and Verify CA(sslMode=VERIFY_CA)
总是使用SSL连接,如果MySQL服务端不支持SSL,连接中断。同时会校验服务端证书,但是不校验主机名。
- Require and Verify Identity(sslMode=VERIFY_IDENTITY)
总是使用SSL连接,如果MySQL服务端不支持SSL,连接中断。同时会校验服务端证书和主机名。