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 Show Profile
Apr 05 MySQL
MySQL数字类型自增的坑
May 07 MySQL
MySQL 存储过程的优缺点分析
May 20 MySQL
MySQL完整性约束的定义与实例教程
May 30 MySQL
MySQL空间数据存储及函数
Sep 25 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 MySQL
一次SQL如何查重及去重的实战记录
Mar 13 MySQL
Mysql使用全文索引(FullText index)的实例代码
Apr 03 MySQL
手把手带你彻底卸载MySQL数据库
Jun 14 MySQL
SQLServer常见数学函数梳理总结
Aug 05 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 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长字符串定义方法
2012/07/12 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
Vue项目安装插件并保存
2019/01/28 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
Python中自定义函数的教程
2015/04/27 Python
使用Python生成url短链接的方法
2015/05/04 Python
快速了解python leveldb
2018/01/18 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
python数据爬下来保存的位置
2020/02/17 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
如何唤起类中的一个方法
2013/11/29 面试题
联谊活动策划书
2014/01/26 职场文书
员工家属慰问信
2015/03/24 职场文书
婚姻出轨保证书
2015/05/08 职场文书
2015入党个人自传范文
2015/06/26 职场文书
初中英语教学随笔
2015/08/15 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL