当前位置: 首页 > news >正文

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.lryc.cn/news/199558.html

相关文章:

  • 性能测试-JMeter分布式测试及其详细步骤
  • 学习gin-vue-admin之创建api和swagger
  • 2023-10-17 mysql-innodb-解析write_row的record的一行数据-分析
  • 认识web自动化测试!
  • 多商户进驻小程序商城的作用是什么
  • 接口响应慢该如何排查
  • spring boot MongoDB实战
  • 企业数字化转型时,会遇到的5大挑战
  • 动态语句 sqlserver
  • 【一文清晰】单元测试到底是什么?应该怎么做?
  • 二、基于PCL的RANSAC拟合点云中所有直线或平面——3D点云处理系列
  • Linux实用指令-指定运行级别、帮助指令
  • 【LeetCode】2562. 找出数组的串联值
  • Hive知识梳理(好文)
  • GitHub仓库的README文件无法显示图片问题-非域名污染原因
  • opencv入门到精通——图片,视频,摄像头的读取与保存
  • Android 13.0 开机动画支持mp4格式视频作为开机动画播放
  • 前端自学需要把大量时间放在 HTML、CSS 吗?
  • Python爬虫如何设置代理服务器(搭建代理服务器教程)
  • 基于SpringBoot的校园志愿者管理系统
  • 24-数据结构-内部排序-基数排序
  • oracle11g安装图解
  • CBitmap、CreateCompatibleBitmap、CreateBitmap
  • 亲测好用教师小程序
  • 第十五章:输入输出流I/O
  • docker命令实例(举例子学习)
  • excel常用函数
  • 使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
  • Git快速安装【附安装包资源】
  • 算法进修Day-33