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,如果数据库和程序都在一台服务器上部署没必要使用。