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 相关文章推荐
mysql字符串截取函数小结
Apr 05 MySQL
mysql部分操作
Apr 05 MySQL
MySQL创建高性能索引的全步骤
May 02 MySQL
MySQL官方导出工具mysqlpump的使用
May 21 MySQL
MySQL中InnoDB存储引擎的锁的基本使用教程
May 26 MySQL
带你学习MySQL执行计划
May 31 MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 MySQL
彻底解决MySQL使用中文乱码的方法
Jan 22 MySQL
MySQL数据库之存储过程 procedure
Jun 16 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
Jun 28 MySQL
mysql通过group by分组取最大时间对应数据的两种有效方法
Sep 23 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
Php output buffering缓存及程序缓存深入解析
2013/07/15 PHP
php的sso单点登录实现方法
2015/01/08 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
基于php编程规范(详解)
2017/08/17 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
js中的cookie的读写操作示例详解
2014/04/17 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
Python单链表简单实现代码
2016/04/27 Python
轻松理解Python 中的 descriptor
2017/09/15 Python
python实现TF-IDF算法解析
2018/01/02 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
How TDD works
2012/09/30 面试题
Ajax的工作原理
2015/12/04 面试题
建筑工地大门标语
2014/06/18 职场文书
服务理念标语
2014/06/18 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书