你的MySQL连接安全吗,使用SSL通信加密

191人浏览

MySQL 5.7版本提供了比较简单的SSL安全访问配置,且默认连接就采用SSL的加密方式。

SSL介绍

SSL(Secure Socket Layer:安全套接字层)利用数据加密为基于TCP协议提供安全保证。

SSL协议功能:
利用对称密钥算法对传输的数据进行加密。
利用数字签名方法对服务器和客户端进行身份验证。
消息传输过程中使用MAC算法来检验消息的完整性。

如果传输不是通过SSL的方式,其在网络中数据都是以明文进行传输的,数据有可能被窃取。

MySQL5.7 SSL配置

运行命令 bin/mysql_ssl_rsa_setup,会在data目录下生成以下.pem文件:
ca-key.pem         #CA私钥
ca.pem             #自签的CA证书,客户端连接也需要提供
client-cert.pem    #客户端连接服务器端需要提供的证书文件
client-key.pem     #客户端连接服务器端需要提供的私钥文件
private_key.pem    #私钥/公钥对的私有成员
public_key.pem     #私钥/公钥对的共有成员
server-cert.pem    #服务器端证书文件
server-key.pem     #服务器端私钥文件

linux环境,需要给MySQL用户读取权限:
chown -R mysql.mysql *.pem

查看SSL开启情况
SHOW VARIABLES LIKE ‘%ssl%’;

Java端使用SSL通信

在JDBC连接中加入useSSL=true
url=jdbc:mysql://192.168.0.33:3306/dbtest?characterEncoding=utf8&useSSL=true 

这只是针对Java程序的安全连接,通常是因为跨机房连接需要考虑数据传输安全。

使用SSL对性能会有些影响但影响不是很大,就象网站使用HTTPS,如果数据库和程序都在一台服务器上部署没必要使用。