MySQL - [16] SSL
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的更多相关文章
- Mysql的ssl主从复制+半同步主从复制
Mysql的ssl主从复制+半同步主从复制 准备工作 1.主从服务器时间同步 [root@localhost ~]# crontab -e */30 * * * * /usr/sbin/ntpdate ...
- MySQL开启SSL认证,以及简单优化
1.1 MySQL开启SSL认证 #生成一个 CA 私钥 [root@db01 ssl]# openssl genrsa 2048 > ca-key.pem Generating RSA pri ...
- mysql -- mysql基于ssl的主从复制
mysql基于ssl的主从复制由于mysql在复制过程中是明文的,所以就大大降低了安全性,因此需要借助于ssl加密来增加其复制的安全性. 主服务器node1:172.16.200.1从服务器node2 ...
- mysql建立ssl安全连接的配置
mysql建立ssl安全连接的配置 1.环境.IP.安装包: centOS 5.4 虚拟机了两台服务器 mysql-5.1.48.tar.gz openssl-0.9.8b.tar.gz server ...
- 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 ...
- MySQL 使用 SSL 连接(附 Docker 例子)
查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql> SHOW VARIABLES LIKE 'have_ssl'; +-------- ...
- Mysql使用SSL连接
最近项目中用到了SSL连接,记录一下,环境为windows10,Mysql版本为5.6 查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql&g ...
- MySQL的SSL加密连接与性能开销
本文转载自:http://www.innomysql.net/article/23959.html(只作转载, 不代表本站和博主同意文中观点或证实文中信息) Contents [hide] 1 前言 ...
- mysql 提示ssl问题
问题信息如下: rements SSL connection must be established by default if explicit option isn't set. For comp ...
- SpringBoot设置mysql的ssl连接
因工作需要,mysql连接需要开启ssl认证,本文主要讲述客户端如何配置ssl连接. 开发环境信息: SpringBoot: 2.0.5.RELEASE mysql-connector-java: 8 ...
随机推荐
- Vue.js与jQuery混用
标签: js 坑位 最近开发一个需求,项目有用到jQuery和Vue,发现我jQuery绑定的事件全部都失效了. Why Vue会重新渲染dom,加上是异步实例Vue.所以正常写程序的话jq的$()获 ...
- windows安装tomcat10
下载安装jdk17 :jdk-17_windows-x64_bin.exe 配置JAVA环境变量 JAVA_HOME:C:\Program Files\Java\jdk-17 PATH:%Java_ ...
- 腾讯云携手Commvault,为云上用户提供安全存储服务
11月2日获悉,腾讯云对象存储COS近日正式通过Commvault备份软件标准化测试,并获得官方认证. 同时,Commvault对COS的支持已经从底层打通.这意味着用户只要购买了腾讯云COS的云存储 ...
- COS 音视频实践|给你的视频加把锁
导语 为了保障视频内容安全,防止视频被非法下载和传播,对象存储(Cloud Object Storage,COS)数据处理基于数据万象 CI 提供了 HLS 视频加密的功能,拥有相比于私有读文件更高的 ...
- 明察秋毫--用ss工具统计网络栈内存使用
前言 本文介绍了用ss工具来统计一下当前网络栈的内存使用情况 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS 查看socket内存相关参数,-m 参数 ss -tm State ...
- Qt开发经验小技巧91-100
数据库处理一般建议在主线程,如果非要在其他线程,务必记得打开数据库也要在那个线程,即在那个线程使用数据库就在那个线程打开,不能打开数据库在主线程,执行sql在子线程,很可能出问题. 新版的QTcpSe ...
- SSM或Spring Boot开发中,mapper包中的mapper.xml没有编译到targger中的解决办法
SSM或Spring Boot开发中,mapper包中的mapper.xml没有编译到targger中的解决办法 在pom文件中加入如下配置: <resources> <!-- 编译 ...
- 架构-初识DDD
引言 继上一篇BFF的文章后,我又去网上学习了一下DDD(领域驱动设计),发现一篇不错的文章,参考并写了一些自己的理解分享在这里. DDD 是什么 领域驱动设计(Domain Driven Desig ...
- c# 获取用户桌面选择的文件
引用COM组件 Shell32 Shell32.ShellFolderView desktopFolderView; int hwnd; Shell32.Shell iShell = new Shel ...
- Spring Security 基于JWT的单点登陆(SSO)开发及原理解析
JDK1.8Spring boot 2.xSpring Security 5.x 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一. SSO的定义是在 ...