mysql配置SSL证书登录的实现


Posted in MySQL onSeptember 04, 2021

前言

国家等级保护三级安全要求,mysql 的 ssl 需要安全证书加密,这里需要研究一下,选几个账户演示下即可。mysql 的版本为 8.0.20

一、Mysql 启用 SSL 配置

1.1 检查是否开启 ssl

mysql> show variables like '%ssl%';
+--------------------+-----------------+
| Variable_name      | Value           |
+--------------------+-----------------+
| have_openssl       | YES             |  
| have_ssl           | YES             |  # 已开启ssl
| mysqlx_ssl_ca      |                 |
| mysqlx_ssl_capath  |                 |
| mysqlx_ssl_cert    |                 |
| mysqlx_ssl_cipher  |                 |
| mysqlx_ssl_crl     |                 |
| mysqlx_ssl_crlpath |                 |
| mysqlx_ssl_key     |                 |
| ssl_ca             | ca.pem          |
| ssl_capath         |                 |
| ssl_cert           | server-cert.pem |
| ssl_cipher         |                 |
| ssl_crl            |                 |
| ssl_crlpath        |                 |
| ssl_fips_mode      | OFF             |
| ssl_key            | server-key.pem  |
+--------------------+-----------------+
17 rows in set (0.56 sec)

1.2 设置用户是否使用 SSL 连接

mysql> select ssl_type from user where user = 'dev_fqr' ;
+----------+
| ssl_type |
+----------+
|          |
+----------+
1 row in set (0.05 sec)

默认用户是没有使用 SSL 登录的。
我们可以强制这个管理用户使用 SSL 登录。

alter user 'xxx'@'%' require ssl;
取消ssl验证:
alter user 'xxx'@'%' require none;

更改后,该账户就无法登录了,查看状态变成下面这种

mysql> select ssl_type from user where user = 'dev_fqr' ;
+----------+
| ssl_type |
+----------+
| ANY      |
+----------+
1 row in set (0.01 sec)

测试登录,本机无法直接登录。

[root@localhost data]# mysql -u dev_fqr -p
Enter password: 
ERROR 2026 (HY000): SSL connection error: SSL is required but the server doesn't support it

远程客户端无法直接登录:

mysql配置SSL证书登录的实现

1.3 使用 SSL 登录

要想通过 SSL 登录,就需要用到下面这几个证书,通过 client 证书 与 server 端进行校验通过才能登录成功。

mysql配置SSL证书登录的实现

1) 本机登录

在 data 目录下的三个文件证书登录。

[root@localhost data]# mysql -udev_fqr -pDev@fqr2021 --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 55
Server version: 8.0.22 MySQL Community Server - GPL
​
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
​
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.
​
You are enforcing ssl connection via unix socket. Please consider
switching ssl off as it does not make connection via unix socket
any more secure.
mysql>

2)navicate 远程客户端登录

把这三个证书下载下来

mysql配置SSL证书登录的实现

配置证书目录,即可远程访问:

mysql配置SSL证书登录的实现

二、总结

因为测评的时候不会看 JDBC 里面的配置,所以 JDBC 就不改了,不然要改动的地方非常的多,具体演示的时候可以用提前准备两个账号,到时候用客户端连接即可。
目前两台 mysql 的ssl 用户如下:

mysql配置SSL证书登录的实现

到此这篇关于mysql配置SSL证书登录的实现的文章就介绍到这了,更多相关mysql SSL证书登录内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木! 

MySQL 相关文章推荐
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
正确使用MySQL update语句
May 26 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
MySQL非空约束(not null)案例讲解
Aug 23 MySQL
SQL 聚合、分组和排序
Nov 11 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
防止web项目中的SQL注入
Dec 06 MySQL
MySQL常见优化方案汇总
Jan 18 MySQL
MySQL学习之基础命令实操总结
Mar 19 MySQL
mysql insert 存在即不插入语法说明
Mar 25 MySQL
MySQL创建管理子分区
Apr 13 MySQL
数据设计之权限的实现
Aug 05 MySQL
MySQL约束超详解
Sep 04 #MySQL
MySQL中的隐藏列的具体查看
Sep 04 #MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 #MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 #MySQL
MySQL8.0的WITH查询详情
Aug 30 #MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 #MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 #MySQL
You might like
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
小偷PHP+Html+缓存
2006/12/20 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
PHP全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
php内存缓存实现方法
2015/01/24 PHP
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
JSON 数据格式详解
2017/09/13 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Python实现的Kmeans++算法实例
2014/04/26 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
python SocketServer源码深入解读
2019/09/17 Python
Python 实现一个简单的web服务器
2021/01/03 Python
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
.NET常见笔试题集
2012/12/01 面试题
C#如何进行LDAP用户校验
2012/11/21 面试题
财务人员个人工作总结
2015/02/27 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript