Linux配置mysql数据库SSL加密

一、SSL介绍

SSL(Secure Socket Layer:安全套接字层)利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。

SSL协议提供的功能主要有:

           1、数据传输的机密性:利用对称密钥算法对传输的数据进行加密。
           2.、身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。
           3、消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。

如果用户的传输不是通过SSL的方式,那么其在网络中数据都是以明文进行传输的,而这给别有用心的人带来了可乘之机。所以,现在很多大型网站都开启了SSL功能。同样地,在我们数据库方面,如果客户端连接服务器获取数据不是使用SSL连接,那么在传输过程中,数据就有可能被窃取。

二、MySQL5.7 SSL启用

2.1 通过命令查看是否开启SSL

show global variables like '%ssl%';

Linux配置mysql数据库SSL加密_第1张图片

当"have_ssl" 为YES的时候,说明数据库是已经开启支持SSL加密连接方式的。

2.2 查看当前登录连接是否是通过SSL加密方式连接

Linux配置mysql数据库SSL加密_第2张图片

2.3 如果没有支持开启SSL,则需要在启动安装mysql_ssl_rsa_setup 使其能支持SSL 功能

若未开启,通过以下步骤:

  • 关闭MySQL服务
  • 运行如下命令:
    mysql_ssl_rsa_setup –-data-dir=/data/mysql-ssl --uid=mysql
    其中:–-data-dir:指定证书和密钥存放位置;–uid:指定所属用户
  • 查看生成的密钥和证书

2.4 MySQL配置文件

强制ssl验证
在[mysqld]下添加如下代码:
require_secure_transport = ON
指定服务端密钥和证书路径
在[mysqld]下添加如下代码:
ssl-ca = /home/tools/mysql/ca.pem
ssl-cert = /home/tools/mysql/server-cert.pem
ssl-key = /home/tools/mysql/server-key.pem
指定客户端密钥和证书路径
在[client]下添加如下代码:
ssl-ca = /home/tools/mysql/ca.pem
ssl-cert = /home/tools/mysql/client-cert.pem
ssl-key = /home/tools/mysql/client-key.pem

三、配置SSL

3.1 首先登录数据库,查看安装路径

show variables like 'datadir';

 Linux配置mysql数据库SSL加密_第3张图片

3.2 知道数据库安装路径之后,查看是否生成了相关秘钥文件

ll /home/tools/mysql/*.pem

Linux配置mysql数据库SSL加密_第4张图片 3.3 添加ssl参数到etc/my.cnf配置文件

[mysql]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem

[mysqld]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem

 3.4 然后使用命令重启

systemctl restart mysqld

3.5 给用户设置SSL

老用户直接修改
ALTER USER 'root'@'19.130.%' REQUIRE SSL;
FLUSH PRIVILEGES;
创建新用户
GRANT ALL PRIVILEGES ON *.* TO 'ssl_test'@'%' IDENTIFIED BY 'ssl_test' REQUIRE SSL;
FLUSH PRIVILEGES;

然后在执行2.2的操作查看数据库连接是否是已经是SSL加密校验

Linux配置mysql数据库SSL加密_第5张图片

 Linux配置mysql数据库SSL加密_第6张图片

 参考文章地址:

MySQL 5.7.18 加密连接mysql_ssl_rsa_setuphttps://www.linuxidc.com/Linux/2017-10/148131.htmMySQL5.7配置SSL加密https://www.cnblogs.com/biaopei/p/13039321.html  小笔记:

https://www.linuxidc.com/Linux/2017-10/148131.htm
https://www.cnblogs.com/biaopei/p/13039321.html

查看数据库安装目录
show variables like 'datadir';

查看ssl参数状态,查看have_ssl,为YES,这表示已经开始支持SSL了
show global variables like '%ssl%';

show global status like '%ssl%';

show status like 'ssl_cipher';

\s 和 status  命令查看数据库连接信息

查看证书过期时间
SHOW STATUS LIKE 'Ssl_server_not%';

证书文件:
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 # 服务器端私钥文件


设置用户使用SLL登录
ALTER USER david@'%' REQUIRE SSL;
FLUSH PRIVILEGES;


数据库配置SLL 
登录数据库-查看数据库安装目录
show variables like 'datadir';

1、在etc/my.cnf 文件配置
[mysql]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem

[mysqld]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem

2、systemctl restart mysqld  重启

然后登陆数据库查看  \s或者status




1、在 /etc/pam.d/system-auth文件配置
auth        required      pam_tally2.so deny=5 unlock_time=600
2、 添加环境变量

vi ~/.bashrc

export PASS_MAX_DAYS=180
export PASS_MIN_DAYS=0
export PASS_MIN_LEN=5
export PASS_WARN_AGE=7

source ~/.bashrc
echo $PASS_WARN_AGE

3、查看ssl参数状态,查看have_ssl,为YES,这表示已经开始支持SSL了
show global variables like '%ssl%';

/etc/profile
export TMOUT=600
source etc/profile
echo $TMOUT

使用修改.bashrc文件(在用户的家目录下)进行环境变量的编辑,只对当前用户有用。使用修改 /etc/profile 文件进行环境变量的编辑,是对所有用户有用。大家一定要注意区别。

你可能感兴趣的:(Linux,ssl,数据库,linux)