MySQL8的SSL功能可以帮助用户更安全地管理数据库,提高数据安全性。

一、SSL概念

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

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

(1)数据传输的机密性:利用对称密钥算法对传输的数据进行加密

(2)身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的

(3)消息完整性验证:消息传输过程中使用MAC算法来校验消息的完整性。

如果用户的传输不是通过SSL的方式,那么其在网络中数据都是以明文进行传输的。

在数据库方面,客户端连接服务器使用SSL连接,能加密通信数据。

(1)启动SSL:可以在MySQL配置文件中启用SSL,需要指定SSL证书、私钥和CA证书的路径。

(2)SSL握手验证:MySQL8支持SSL握手验证,可以确保客户端连接到正确的服务器。

(3)SSL客户端认证:MySQL8支持客户端证书认证,可以进一步增强安全性。

(4)SSL连接限制:可以通过修改MySQL配置文件中的参数来限制SSL连接的最大数量和连接的最大并发数。

二、MySQL实现SSL的流程

(1)先为MySQL服务器创建SSL证书和私钥

(2)在MySQL里面配置SSL,并启动服务

(3)创建用户的时候带上SSL标签(require ssl)

(4)连接数据库的时候带上SSL

三、MySQL配置SSL

3.1、SSL策略

--ssl-mode是MySQL命令行客户端的一个选项,用于指定SSL/TLS连接的模式。

可供选择的值:DISABLED(禁用SSL)、REQUIRED(必须使用SSL)、VERIFY_CA(验证CA)、VERIFY_IDENTITY(验证身份)

3.2、创建证书

(1)安装openssl依赖包:yum install -y openssl

(2)查看openssl版本:openssl version

(3)生成SSL连接所需RSA密钥对

mysql_ssl_rsa_setup --datadir=/var/lib/mysql --user=mysql --uid=mysql
# datadir: 指定数据库文件路径
# user、uid:指定运行mysql_ssl_rsa_setup命令的用户

会在datadir目录下自动生成以下文件

(1)ca-key.pem:CA证书私钥文件,用于生成SSL连接所需的服务器和客户端证书。
(2)ca.pem:CA证书公钥文件,用于验证SSL连接中服务器和客户端证书的合法性。
(3)client-cert.pem:客户端证书,在SSL连接中用于验证客户端的身份。
(4)client-key.pem:客户端证书的私钥,用于加密和解密SSL连接中客户端发送的数据。
(5)private_key.pem:私钥文件,用于加密和解密SSL连接中的数据。
(6)public_key.pem:公钥文件,用于验证SSL连接中的数据。
(7)server_cert.pem:服务器证书,用于验证MySQL数据库服务器的身份。
(8)server_key.pem:服务器证书的私钥,用于加密和解密SSL连接中服务器发送的数据。

3.3、配置证书

(1)配置my.ini文件

[mysqld]
# 指定CA证书公钥文件的路径
ssl-ca=/path/to/ca.pem
# 指定mysql服务器证书的路径
ssl-cert=/path/to/server_cert.pem
# 指定mysql服务器证书的私钥路径
ssl-key=/path/to/server_key.pem [client]
# 指定CA证书公钥文件的路径
ssl-ca=/path/to/ca.pem
# 指定mysql客户端证书的路径
ssl-cert=/path/to/client_cert.pem
# 指定mysql客户端证书的私钥路径
ssl-key=/path/to/client_key.pem

(2)重启mysql服务:systemctl restart mysqld

3.4、检查SSL配置

(1)查看MySQL服务器是否支持SSL:SHOW VARIABLES LIKE 'have_ssl';

Tips:如果输出显示 have_ssl 的值为 YES,则表明MySQL支持SSL。

(2)查看全局变量中包含"SSL"字符的所有变量名和值:show global variable like "%SSL%";

(3)查看tls安全传输版本:show global variables like "tls_version";

(4)检查SSL证书和密钥是否已被配置:SHOW VARIABLES LIKE 'ssl%';

Tips:查看输出结果中是否有ssl_ca、ssl_cert和ssl_key等变量存在,并且这些变量的值不为空,表示SSL配置已经存在。

(5)检查当前的连接是否使用了SSL:SHOW STATUS LIKE 'Ssl_cipher';

Tips:如果Ssl_cipher的值不是NULL或空字符串,那么当前连接正在使用SSL。

(6)检查当前连接使用的SSL版本和协议:

SHOW STATUS LIKE 'Ssl_version';
SHOW STATUS LIKE 'Ssl_session_reuses';

(7)检查SSL会话状态

SHOW STATUS LIKE 'Ssl_accept_renegotiates';
SHOW STATUS LIKE 'Ssl_accepts';
SHOW STATUS LIKE 'Ssl_connect_renegotiates';
SHOW STATUS LIKE 'Ssl_connected';
SHOW STATUS LIKE 'Ssl_server_not_finished';

3.5、配置SSL用户

(1)创建用户普通认证方式

-- 创建用户
create user 用户名@'%' identified by '密码';
-- 给用户赋权
grant all on *.* to 用户名@'%';
-- 应用权限配置
flush privileges;
-- 查看用户权限
select user,host,ssl_type,ssl_cipher from mysql.user;

(2)创建用户强制证书认证

-- require ssl强制用户使用证书认证
create user 用户名@'%' identified by '密码' require ssl;
-- require x509强制用户使用证书认证
create user 用户名@'%' identified by '密码' require x509;
-- 给用户授权
grant all on *.* to 用户名@'%';
-- 应用权限配置
flush privileges;
-- 查看用户权限
select user,host,ssl_type,ssl_cipher from mysql.user;

(3)设置用户强制证书登录

-- 设置强制ssl
alter user user0001@'%' require ssl;
-- 取消强制ssl
alter user user0001@'%' require none;

3.6、SSL登录

(1)加密登录方法1

# --ssl-mode=disable: 表示关闭SSL加密模式
mysql -uroot -p --ssl-mode=disable
# 登录mysql后查看加密模式
status # --ssl-ode=required: 标识强制开启SSL加密模式
mysql -uroot -p --ssl-mode=required
# 登录mysql后查看加密模式
status

(2)加密登录方法2

# 指定CA证书及客户端证书及私钥
mysql -uroot -p --ssl-ca=/var/lib/mysql/ca.pem \
--ssl-cert=/var/lib/mysql/client-cert.pem \
--ssl-key=/var/lib/mysql/client-key.pem

— 业精于勤荒于嬉,行成于思毁于随 —

MySQL - [16] SSL的更多相关文章

  1. Mysql的ssl主从复制+半同步主从复制

    Mysql的ssl主从复制+半同步主从复制 准备工作 1.主从服务器时间同步 [root@localhost ~]# crontab -e */30 * * * * /usr/sbin/ntpdate ...

  2. MySQL开启SSL认证,以及简单优化

    1.1 MySQL开启SSL认证 #生成一个 CA 私钥 [root@db01 ssl]# openssl genrsa 2048 > ca-key.pem Generating RSA pri ...

  3. mysql -- mysql基于ssl的主从复制

    mysql基于ssl的主从复制由于mysql在复制过程中是明文的,所以就大大降低了安全性,因此需要借助于ssl加密来增加其复制的安全性. 主服务器node1:172.16.200.1从服务器node2 ...

  4. mysql建立ssl安全连接的配置

    mysql建立ssl安全连接的配置 1.环境.IP.安装包: centOS 5.4 虚拟机了两台服务器 mysql-5.1.48.tar.gz openssl-0.9.8b.tar.gz server ...

  5. Java连接mysql——Establishing SSL connection without server's identity verification is not recommended.

    Establishing SSL connection without server's identity verification is not recommended. 出现这个错误的原因是因为m ...

  6. MySQL 使用 SSL 连接(附 Docker 例子)

    查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql> SHOW VARIABLES LIKE 'have_ssl'; +-------- ...

  7. Mysql使用SSL连接

    最近项目中用到了SSL连接,记录一下,环境为windows10,Mysql版本为5.6 查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql&g ...

  8. MySQL的SSL加密连接与性能开销

    本文转载自:http://www.innomysql.net/article/23959.html(只作转载, 不代表本站和博主同意文中观点或证实文中信息) Contents [hide] 1 前言 ...

  9. mysql 提示ssl问题

    问题信息如下: rements SSL connection must be established by default if explicit option isn't set. For comp ...

  10. SpringBoot设置mysql的ssl连接

    因工作需要,mysql连接需要开启ssl认证,本文主要讲述客户端如何配置ssl连接. 开发环境信息: SpringBoot: 2.0.5.RELEASE mysql-connector-java: 8 ...

随机推荐

  1. Vue.js与jQuery混用

    标签: js 坑位 最近开发一个需求,项目有用到jQuery和Vue,发现我jQuery绑定的事件全部都失效了. Why Vue会重新渲染dom,加上是异步实例Vue.所以正常写程序的话jq的$()获 ...

  2. windows安装tomcat10

    ​下载安装jdk17 :jdk-17_windows-x64_bin.exe 配置JAVA环境变量 JAVA_HOME:C:\Program Files\Java\jdk-17 PATH:%Java_ ...

  3. 腾讯云携手Commvault,为云上用户提供安全存储服务

    11月2日获悉,腾讯云对象存储COS近日正式通过Commvault备份软件标准化测试,并获得官方认证. 同时,Commvault对COS的支持已经从底层打通.这意味着用户只要购买了腾讯云COS的云存储 ...

  4. COS 音视频实践|给你的视频加把锁

    导语 为了保障视频内容安全,防止视频被非法下载和传播,对象存储(Cloud Object Storage,COS)数据处理基于数据万象 CI 提供了 HLS 视频加密的功能,拥有相比于私有读文件更高的 ...

  5. 明察秋毫--用ss工具统计网络栈内存使用

    前言 本文介绍了用ss工具来统计一下当前网络栈的内存使用情况 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS 查看socket内存相关参数,-m 参数 ss -tm State ...

  6. Qt开发经验小技巧91-100

    数据库处理一般建议在主线程,如果非要在其他线程,务必记得打开数据库也要在那个线程,即在那个线程使用数据库就在那个线程打开,不能打开数据库在主线程,执行sql在子线程,很可能出问题. 新版的QTcpSe ...

  7. SSM或Spring Boot开发中,mapper包中的mapper.xml没有编译到targger中的解决办法

    SSM或Spring Boot开发中,mapper包中的mapper.xml没有编译到targger中的解决办法 在pom文件中加入如下配置: <resources> <!-- 编译 ...

  8. 架构-初识DDD

    引言 继上一篇BFF的文章后,我又去网上学习了一下DDD(领域驱动设计),发现一篇不错的文章,参考并写了一些自己的理解分享在这里. DDD 是什么 领域驱动设计(Domain Driven Desig ...

  9. c# 获取用户桌面选择的文件

    引用COM组件 Shell32 Shell32.ShellFolderView desktopFolderView; int hwnd; Shell32.Shell iShell = new Shel ...

  10. Spring Security 基于JWT的单点登陆(SSO)开发及原理解析

    JDK1.8Spring boot 2.xSpring Security 5.x 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一. SSO的定义是在 ...