使用SSL
默认情况下mysql使用不加密的连接,也可使用—compress选项压缩传送数据,但是仍旧不够安全;
配置SSL
系统必须支持OpenSSL/yaSSL,为了方便Mysql默认内置了yaSSL
查看服务器变量have_ssl,是否支持SSL
mysql> SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl | YES |
+---------------+-------+
--若为disabled,说明此功能没有激活,使用—ssl-xxx选项重启服务器
http://dev.mysql.com/doc/mysql-security-excerpt/5.5/en/creating-ssl-certs.html
使用SSL连接
使用下列选项启动mysql服务器,即可接受使用SSL连接的客户端了
- --ssl-ca identifies the Certificate Authority (CA) certificate.
- --ssl-cert identifies the server public key certificate. This can be sent to the client and authenticated against the CA certificate that it has.
- --ssl-key identifies the server private key.
例如
shell> mysqld --ssl-ca=ca-cert.pem \
--ssl-cert=server-cert.pem \
--ssl-key=server-key.pem
而客户端须采用同样的选项,且CA证书必须要与服务器的保持一致
如果某用户使用grant .. require ssl创建或没有特定的SSL要求,只需调用如下命令连接服务器
shell> mysql --ssl-ca=ca-cert.pem
--服务器启动时至少要指定—ssl-cert/--ssl-key
如果需要客户端证书,则在创建用户时需使用require X509选项,在连接服务器是必须如下所示,否则可能会被拒绝
shell> mysql --ssl-ca=ca-cert.pem \
--ssl-cert=client-cert.pem \
--ssl-key=client-key.pem
查看当前连接是否使用SSL,可查看Ssl_cipher的值
mysql> SHOW STATUS LIKE 'Ssl_cipher';
+---------------+--------------------+
| Variable_name | Value |
+---------------+--------------------+
| Ssl_cipher | DHE-RSA-AES256-SHA |
+---------------+--------------------+