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 sql_mode修改不生效的原因及解决
May 07 MySQL
MySql学习笔记之事务隔离级别详解
May 12 MySQL
详解GaussDB for MySQL性能优化
May 18 MySQL
zabbix监控mysql的实例方法
Jun 02 MySQL
mysql 数据插入优化方法之concurrent_insert
Jul 01 MySQL
MySQL系列之四 SQL语法
Jul 02 MySQL
MySQL系列之九 mysql查询缓存及索引
Jul 02 MySQL
QT连接MYSQL数据库的详细步骤
Jul 07 MySQL
MySQL如何解决幻读问题
Aug 07 MySQL
MySQL数据库如何查看表占用空间大小
Jun 10 MySQL
MySQL8.0 Undo Tablespace管理详解
Jun 16 MySQL
MySQL的意向共享锁、意向排它锁和死锁
Jul 15 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
PHPMailer 中文使用说明小结
2010/01/22 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
PHP设置进度条的方法
2015/07/08 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
JavaScript 撑出页面文字换行
2009/06/15 Javascript
javascript 数组排序函数
2009/08/20 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
Python生成器(Generator)详解
2015/04/13 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
python编写俄罗斯方块
2020/03/13 Python
迪拜航空官方网站:flydubai
2017/04/20 全球购物
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
计算机专业毕业生的自我评价
2013/11/18 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
协议书范本
2014/04/23 职场文书
公司投资建议书
2014/05/16 职场文书
模范教师事迹材料
2014/12/16 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js