MySQL/Encrypted Connection
外观
< MySQL
客户端可以与MySQL服务器加密连接,也可以非加密连接。这是采用了SSL(Secure Socket Layer:安全套接字层),利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。
服务器Data目录下的SSL相关文件
[编辑]- ca-key.pem #CA私钥
- ca.pem #自签的CA证书,客户端连接也需要提供
- client-cert.pem #客户端连接服务器端需要提供的证书文件(因为安装一套服务器的bin目录总是带着一套client工具)
- client-key.pem #客户端连接服务器端需要提供的私钥文件
- private_key.pem #私钥/公钥对的私有成员
- public_key.pem #私钥/公钥对的共有成员
- server-cert.pem #服务器端证书公钥文件
- server-key.pem #服务器端证书私钥文件
在服务器中查看是否开启了SSL连接
[编辑]root登录后:
mysql>show global variables like '%ssl%';
查看用户是否用SSL连接
[编辑]mysql>\s ... SSL: Cipher in use is DHE-RSA-AES128-GCM-SHA256 ...
强制指定用户必须使用SSL连接数据库
[编辑]#修改已存在用户 ALTER USER 'dba'@'%' REQUIRE SSL; #新建必须使用SSL用户 grant select on *.* to UserName@'%' identified by 'xxx' REQUIRE SSL;
服务器启动时的相关参数
[编辑]启动时关闭SSL:
mysqld --console --skip-ssl
或使用配置文件,即在 my.cnf 文件中添加如下内容: [mysqld]
实际上,如果服务器软件在默认的data文件夹发现了有效的certificate与key 文件ca.pem、server-cert.pem、server-key.pem,就会支持客户端加密连接,否则就不支持客户端加密连接。
客户端登录时的SSL参数
[编辑]对于非强制SSL连接的数据库用户,登录时会先尝试SSL,失败后再尝试非加密连接。
客户端关闭SSL的登陆: mysql -h localhost -u root -p --ssl-mode=DISABLED
客户端开启SSL登陆,需要拷贝 ca-cert.pem到本地。执行:
mysql -uroot -hlocalhost -pzdh1234 --ssl-ca=/home/mysql/sslconfig/ca.pem
或使用配置文件,即在 my.cnf 文件中添加如下内容:
[client] ssl-ca=/home/mysql/sslconfig/ca.pem