window mysql5.7.27 启用SSL openssl mysql_ssl_rsa_setup

应客户监管部门要求 mysql必须要启用SSL。由于mysql安装在window上,启用过程中遇到了不少的坑,在此记录一下。

安装openssl

如果已经安装过可跳过此步

 https://slproweb.com/download/Win64OpenSSL-1_1_1w.msi

复制到浏览器下载后安装即可。如果需要其他的openssl版本下载地址参考 https://slproweb.com/products/Win32OpenSSL.html。

生成mysql ssl rsa密钥

创建目录d:\mysql_ssl用来保存生成的密钥,然后进入mysql安装目录 执行以下命令

  mysql_ssl_rsa_setup.exe -d D:\mysql_ssl

这一步很坑 由于对openssl了解不深,执行上面的命令报了如下错误。在网上查了资料少之又少。

D:\devs\mysql-5.7.27-winx64\bin>mysql_ssl_rsa_setup.exe -d D:\mysql_ssl
Ignoring -days; not generating a certificate
Can't open Z:/extlib/_2020Q3__/ssl/openssl.cnf for reading, No such file or directory
8492:error:02001003:system library:fopen:No such process:crypto/bio/bss_file.c:69:fopen('Z:/extlib/_2020Q3__/ssl/openssl.cnf','r')
8492:error:2006D080:BIO routines:BIO_new_file:no such file:crypto/bio/bss_file.c:76:
2023-10-19 10:42:47 [ERROR]   Error generating ca_key.pem and ca_req.pem

最后根据错误信息 研究了好一半天 加了openssl的环境变量后,再执行以上命令问题得到了解决。真的是…

set OpenSSL_HOME=C:\Program Files\OpenSSL-Win64\bin
set OPENSSL_CONF=C:\Program Files\OpenSSL-Win64\bin\openssl.cfg

成功生成mysql_ssl_rsa命令的效果如下

D:\devs\mysql-5.7.27-winx64\bin>mysql_ssl_rsa_setup.exe -d D:\devs\mysql-5.7.27-winx64\mysql_ssl
Ignoring -days; not generating a certificate
Generating a RSA private key
......+++++
...........+++++
writing new private key to 'ca-key.pem'
-----
Ignoring -days; not generating a certificate
Generating a RSA private key
.................................................................................................................................+++++
............................+++++
writing new private key to 'server-key.pem'
-----
Ignoring -days; not generating a certificate
Generating a RSA private key
......................................................................................................................................+++++
..................+++++
writing new private key to 'client-key.pem'
-----

生成了文件情况列表

  • ca.pem: CA证书
  • ca-key.pem:CA证书密钥
  • client-cert.pem:客户端使用的证书
  • client-key.pem:客户端使用的密钥
  • private_key.pem:私钥
  • public_key.pem:公钥
  • server-cert.pem:服务端使用的证书
  • server-key.pem:服务端使用的密钥
配置mysql ssl 证书

在my.ini文件mysqld节点下添加配置

#服务器CA证书
ssl-ca= D:\\mysql_ssl\\ca.pem 
#服务端使用的证书
ssl-cert= D:\\mysql_ssl\\server-cert.pem
#服务端使用的密钥
ssl-key=D:\\mysql_ssl\\server-key.pem

重启mysql服务后 查看

 show variables like '%ssl%';mysql>  show variables like '%ssl%';
+---------------+------------------------------------------------------------+
| Variable_name | Value                                                      |
+---------------+------------------------------------------------------------+
| have_openssl  | YES                                                        |
| have_ssl      | YES                                                        |
| ssl_ca        | D:\mysql_ssl\ca.pem |
| ssl_capath    |                                                            |
| ssl_cert      | D:\mysql_ssl\server-cert.pem |
| ssl_cipher    |                                                            |
| ssl_crl       |                                                            |
| ssl_crlpath   |                                                            |
| ssl_key       | D:\mysql_ssl\server-key.pem  |
+---------------+------------------------------------------------------------+

此时能看到 have_openssl have_ssl 都已经变为YES 表示SSL开启成功。

客户端使用证书连接MySQL数据库验证
mysql -uroot -proot  --ssl-cert=D:\mysql_ssl\client-cert.pem --ssl-key=D:\mysql_ssl\client-key.pem

使用mysql命令 带参数–ssl-cert --ssl-key指定mysql客户端证书和客户端密钥进行登录Mysql,登录成功表示验证SSL连接完成。

另外如果需要强行验证用户必须使用SSL连接的话 在创建用户的时候加上参数 require SSL 表示必须SSL。

创建用户指定require SSL 示例如下:

grant all on *.* to 'userssl'@'%' identified by 'userssl' require SSL;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/114336.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端数据可视化之【Echarts下载使用】

目录 🌟下载🌟浏览器引入🌟模块化引入 🌟使用🌟基本使用步骤 🌟绘制一个简单的图表🌟写在最后 🌟下载 🌟浏览器引入 官网下载界面:官方网站 或 Echarts中文…

Bootstrap的列表组相关知识

目录 01-列表组的相关基础知识02-一个简单的列表组示例03-激活或禁用列表组的一行或多行04-设置列表项的颜色05-给列表项添加徽章 01-列表组的相关基础知识 Bootstrap的list-group是一个用于创建列表组件的CSS类,通常用于显示一个项目列表,如导航菜单或…

迁移kubelet、docker和containerd工作目录

文章目录 问题背景迁移Docker停止 Docker 服务修改配置移动文件重新启动 Docker 服务 containerd停止服务修改配置移动文件重新启动服务 kubelet(遇到问题待解决)停止服务修改配置移动文件(遇到问题待解决)重新启动服务 使用的版本…

2023年拼多多双11百亿补贴新增单件立减玩法介绍

2023年拼多多双11百亿补贴新增单件立减玩法介绍 拼多多启动了11.11大促活动,主题为“天天11.11,天天真低价”。消费者享受多重优惠,包括满减、百亿补贴和单件立减等。百亿补贴新增玩法,有超过20000款品牌商品参与单件立减活动。 …

iOS逆向工程之Theos

如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生。那么由Tweak我们又会引出Theos, 那么什么是Theos呢,简单一句话,Theos是一个越狱开发工具包,Theos是越狱开发工具的首先,因为其最大的特点就是简单。大道至简&…

10月面试js基础

作用域 变量的可用范围 作用域链 保存的变量的使用顺序的一个链(也就是路线图), 被称为作用域链。 当在Javascript中使用一个变量的时候,首先Javascript引擎会尝试在当前作用域下去寻找该变量,如果没找到,再…

Hook原理--逆向开发

今天我们将继续讲解逆向开发工程另一个重要内容--Hook原理讲解。Hook,可以中文译为“挂钩”或者“钩子”,逆向开发中改变程序运行的一种技术。按照如下过程进行讲解 Hook概述Hook技术方式fishhook原理及实例符号表查看函数名称总结 一、Hook概述 在逆…

Lake Formation 和 IAM 之间的区别与联系

IAM 和 Lake Formation 都是 AWS 上的权限管理服务,且默认都是自动开启并生效的,只是如果你没有特别配置过它们,可能感觉不到它们的存在,特别是Lake Formation(后文简写为 LF),通常情况下都是“透明”的,但它确实在每次请求时进行了权限检查。本文会详细介绍一下两者之…

Mac GPU MPS常用方法

Requirements Mac computers with Apple silicon or AMD GPUs macOS 12.3 or later Python 3.7 or later Xcode command-line tools: xcode-select --install 判断是否可用 import torch if torch.backends.mps.is_available():mps_device torch.device("mps")x …

【数据结构】堆综合的运用

目录 一,运用堆结构进行排序 二,经典的Topk问题 一,运用堆结构进行排序 当我们用堆结构进行排序时,首先要明确的是升序排列要建大堆,降序排列要建小堆,不是说升序建小堆就不行,降序建大堆就不…

【最短路径算法】一文掌握Dijkstra算法,详解与应用示例+代码

目录 1 Dijkstra算法 2 Dijkstra算法的步骤 3 Dijkstra算法python实现 4 Dijkstra算法应用示例详解 1 Dijkstra算法 Dijkstra算法(迪杰斯特拉算法)是一种用于在加权图中查找从一个起始节点到所有其他节点的最短路径的算法。该算法最初由荷兰计算机科…

offsetof宏计算某变量相对于首地址的偏移量

宏:offsetof的使用 //offsetof (type,member) //type是结构体的类型名,member是结构体中的成员名。struct Student {char name[5]; // 姓名int age; // 年龄float score; // 成绩 };int main() {struct Student s;printf("%zd\n", off…

【转载】 Bytedance火山引擎智能拥塞控制算法 VICC

BytedanceTechBlog : 火山引擎实时、低延时拥塞控制算法的优化实践 火山引擎 网站如何利用播放器节省20%点播成本点击下面的链接进入原文:原创 翟强俊、唐辉 字节跳动技术团队 2023-10-18 11:59 发表于北京 一些专利摘要 火山引擎智能拥塞控制算法 VICC(Volcano Intelligent…

Android微信逆向--实现发朋友圈动态

Android微信逆向--实现发朋友圈动态 0x0 前言# 最近一直在研究Windows逆向的东西,想着快要把Android给遗忘了。所以就想利用工作之余来研究Android相关的技术,来保持对Android热情。调用微信代码来发送朋友圈动态一直是自己想实现的东西,研…

邻接表存储图或者树

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家来访。 介绍 每个顶点都作为头节点,并且存在一个一维数组中h[N]。树就是相当于一种有向图…

redis哨兵模式详解

目录 前言: 手动干预主节点挂的情况 哨兵节点操作流程 哨兵重新选取主节点流程 主观下线 客观下线 哨兵节点选leader 挑选从节点作为主节点 前言: redis在主从模式下,主节点服务就显的尤为重要。为了保证redis集群的高可用&#xff0…

论文阅读-FCD-Net: 学习检测多类型同源深度伪造人脸图像

一、论文信息 论文题目:FCD-Net: Learning to Detect Multiple Types of Homologous Deepfake Face Images 作者团队:Ruidong Han , Xiaofeng Wang , Ningning Bai, Qin Wang, Zinian Liu, and Jianru Xue (西安理工大学,西安交…

GB28181学习(十)——视音频文件下载

要求 SIP服务器接收到媒体接收者发送的视音频文件下载请求后向媒体流发送者发送媒体文件下载命令,媒体流发送者采用RTP将视频流传输给媒体流接收者,媒体流接收者直接将视频流保存为媒体文件;媒体流接收者或SIP服务器可通过配置查询等方式获取…

【Hello Algorithm】暴力递归到动态规划(五)

死亡概率问题 现在给定你三个参数 N M K 怪兽有 N 滴血 等着英雄来砍自己 英雄每一次打击会让怪兽流失 0 ~ M 滴血 概率相同 请求在K次之后 英雄把怪兽砍死的概率 递归版本 面对这个问题 我们首先来想递归函数怎么写 首先是返回值 我们无法直接返回一个概率给上层 所以我…

gRPC之gRPC转换HTTP

1、gRPC转换HTTP 我们通常把RPC用作内部通信,而使用Restful Api进行外部通信。为了避免写两套应用,我们使用grpc- gateway 把gRPC转成HTTP。服务接收到HTTP请求后,grpc-gateway把它转成gRPC进行处理,然后以JSON 形式返回数据。…