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
教你用eclipse连接mysql数据库
Apr 22 MySQL
MySQL创建高性能索引的全步骤
May 02 MySQL
MySQL 时间类型的选择
Jun 05 MySQL
MySQL系列之十五 MySQL常用配置和性能压力测试
Jul 02 MySQL
MySQL对数据表已有表进行分区表的实现
Nov 01 MySQL
SpringBoot连接MySQL获取数据写后端接口的操作方法
Nov 02 MySQL
MySQL之select、distinct、limit的使用
Nov 11 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
pt-archiver 主键自增
Apr 26 MySQL
Mysql索引失效 数据库表中有索引还是查询很慢
May 15 MySQL
MySQL安装失败的原因及解决步骤
Jun 14 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新手上路(五)
2006/10/09 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
js实现收缩菜单效果实例代码
2013/10/30 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
jQuery冲突问题解决方法
2021/01/19 jQuery
Python输出9*9乘法表的方法
2015/05/25 Python
Django框架模板介绍
2019/01/15 Python
python实现dijkstra最短路由算法
2019/01/17 Python
python3实现弹弹球小游戏
2019/11/25 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
关于python中remove的一些坑小结
2021/01/04 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
公司中层干部的自我评价分享
2014/03/01 职场文书
企业总经理任命书
2014/06/05 职场文书
导航工程专业自荐信
2014/09/02 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
经理岗位职责
2015/02/02 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android