赞
踩
MySQL服务器开启SSL加密功能
我们知道,MySQL5.7之前版本,安全性做的并不够好,比如安装时生成的root空密码账号、存在任何用户都能连接上的test库等,导致数据库存在较大的安全隐患。好在5.7版本对以上问题进行了一一修复。与此同时,MySQL 5.7版本还提供了更为简单SSL安全访问配置,且默认连接就采用SSL的加密方式,这让数据库的安全性提高一个层次。
环境
IP
主机名
说明
192.168.1.101
node1
mysql服务端
192.168.1.102
node2
mysql客户端
1、SSL介绍
SSL(Secure Socket Layer:安全套接字层)利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。
SSL协议提供的功能主要有:
1、数据传输的机密性:利用对称密钥算法对传输的数据进行加密;
2、身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的;
3、消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。
如果用户的传输不是通过SSL的方式,那么其在网络中数据都是以明文进行传输的,而这给别有用心的人带来了可乘之机。所以,现在很多大型网站都开启了SSL功能。同样地,在我们数据库方面,如果客户端连接服务器获取数据不是使用SSL连接,那么在传输过程中,数据就有可能被窃取。
2、MySQL5.7 SSL配置和启用
2.1、查看SSL开启情况
root@node1 19:58: [(none)]> show global variables like '%ssl%';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | |
+---------------+----------+
9 rows in set (0.01 sec)
root@node1 19:58: [(none)]> status;
--------------
mysql Ver 14.14 Distrib 5.7.22, for linux-glibc2.12 (x86_64) using EditLine wrapper
Connection id: 4
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.22-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /data/mysql/mysql3306.sock
Uptime: 6 min 9 sec
Threads: 1 Questions: 14 Slow queries: 0 Opens: 109 Flush tables: 1 Open tables: 103 Queries per second avg: 0.037
--------------
root@node1 19:59: [(none)]>
由上可看出:目前MySQL服务没有开启SSL功能;
2.2、安装openssl
yum install openssl -y
2.3、关闭MySQL服务
systemctl stop mysqld
2.4、运行mysql_ssl_rsa_setup 命令,开启SSL连接
安装SSL,开启SSL连接
[root@node1 mysql]# ./bin/mysql_ssl_rsa_setup
Generating a 2048 bit RSA private key
.........................................+++
.............+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
....................................+++
.....................................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
.......................+++
..............................................................................+++
writing new private key to 'client-key.pem'
-----
[root@node1 mysql]#
典型的选项是--datadir指定创建文件的位置,以及--verbose查看mysql_ssl_rsa_setup执行的openssl命令 。
当运行完这个命令后,默认会在$datadir目录下生成以下pem文件,这些文件就是用于启用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。