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 07 MySQL
MySQL 如何分析查询性能
May 12 MySQL
MySQL REVOKE实现删除用户权限
Jun 18 MySQL
浅谈MySQL之浅入深出页原理
Jun 23 MySQL
MySQL的Query Cache图文详解
Jul 01 MySQL
MySQL子查询中order by不生效问题的解决方法
Aug 02 MySQL
SQL基础查询和LINQ集成化查询
Jan 18 MySQL
一次Mysql update sql不当引起的生产故障记录
Apr 01 MySQL
MySQL的存储过程和相关函数
Apr 26 MySQL
MySQL数据库 安全管理
May 06 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
May 30 MySQL
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
php简单浏览目录内容的实现代码
2013/06/07 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
Python如何操作docker redis过程解析
2020/08/10 Python
详解如何修改python中字典的键和值
2020/09/29 Python
悬挂训练绳:TRX
2017/12/14 全球购物
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
一套Delphi的笔试题二
2013/05/11 面试题
平安工地建设方案
2014/05/06 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
大学生实习证明
2015/06/16 职场文书
开学第一天的感想
2015/08/10 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书