设为首页 加入收藏

TOP

MySQL 5.7 使用SSL安全连接
2017-07-04 10:23:20 】 浏览:550
Tags:MySQL 5.7 使用 SSL 安全 连接

MySQL默认的数据通道是不加密的,在一些安全性要求特别高的场景下,我们需要配置MySQL端口为SSL,使得数据通道加密处理,避免敏感信息泄漏和被篡改。


当然,启用MySQL SSL之后,由于每个数据包都需要加密和解密,这个对MySQL的性能是有不小影响的,读者们在使用的时候,要根据实际情况斟酌。


MySQL客户端登录服务器时候的密码不是明文传输,有加密策略处理。


配置MySQL服务器证书


编辑 /etc/mysql/my.cnf 文件
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem


把上面三行默认证书配置注释打开,使用自己的证书。笔者就使用上次在搭建自己的CA服务 – OpenSSL CA 实战文章中生成的证书
ssl-ca=/home/yunweipai/user_certs/ca_cert.cer
ssl-cert=/home/yunweipai/user_certs/web.cer
ssl-key=/home/yunweipai/user_certs/web_key_plain.pem


这里需要注意的是,在ubuntu上,配置证书后如果不生效,参考这里解决方法


注意上面配置的 web_key_plain.pem 文件,由于MySQL不支持加密后的私钥,因此我们使用命令
openssl rsa -in web_key.pem -passin pass:Yunweipai@123 -out web_key_plain.pem


将私钥解密。MySQL不支持私钥加密的原因是从安全性角度考虑,因为如果要用户传递一个加密的私钥,那么必须要用户传密码,那么MySQL怎么存储这个密码呢?这就引出了我们在密码存储和传输的安全建议里面提到的一系列问题了。
所以MySQL为了简化实现,就不支持私钥加密。


指定客户端连接方式


客户端连接(SSL方式)


mysql 客户端连接
mysql -u root -pChangeme_123 -P 3306 --ssl-ca=/home/yunweipai/user_certs/ca_cert.cer
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.5.43-0ubuntu0.12.04.1 (Ubuntu)


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.5.43, for debian-linux-gnu (i686) using readline 6.2


Connection id:      36
Current database:
Current user:      root@localhost
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:    5.5.43-0ubuntu0.12.04.1 (Ubuntu)
Protocol version:  10
Connection:    Localhost via UNIX socket
Server characterset:    latin1
Db    characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:        29 sec


Threads: 1  Questions: 109  Slow queries: 0  Opens: 48  Flush tables: 1  Open tables: 41  Queries per second avg: 3.758
--------------


JDBC连接


在jdbc字符串中增加下面参数
useSSL=true&verifyServerCertificate=false
这么就不需要客户端配置证书了,配置就简单很多。因为mysql本身有账号口令认证,因此不需要证书认证。


Creating SSL and RSA Certificates and Keys using MySQL


Configuring MySQL to Use Secure Connections


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MySQL 5.6使用SSL加密连接实战 下一篇MySQL 5.7 多实例安装部署实例

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目