MySQL启用SSL连接
1.手动创建自认证证书
1.1 创建CA证书
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3600 \
-key ca-key.pem -out ca.pem
1.2 创建服务端证书,去除加密,使用CA签名
server-cert.pem = public key, server-key.pem = private key
openssl req -newkey rsa:2048 -days 3600 \
-nodes -keyout server-key.pem -out server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3600 \
-CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
1.3 创建客户端证书,去除加密,使用CA签名
client-cert.pem = public key, client-key.pem = private key
openssl req -newkey rsa:2048 -days 3600 \
-nodes -keyout client-key.pem -out client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3600 \
-CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
1.4 证书生成后,进行校验:
openssl verify -CAfile ca.pem server-cert.pem client-cert.pem
2.修改my.cnf文件,mysqld下面增加如下配置项
[mysqld]
ssl-ca=/home/mysql/sslconfig/ca.pem
ssl-cert=/home/mysql/sslconfig/server-cert.pem
ssl-key=/home/mysql/sslconfig/server-key.pem
说明:pem配置文件中在test目录下有,但是最好自己生成
/home/mysql/mysql-5.5.35-linux2.6-x86_64/mysql-test/std_data
3.重启数据库
/etc/init.d/mysqld restart
4.登陆验证
4.1查看服务器变量have_ssl,是否支持SSL
SHOW VARIABLES LIKE 'have_%ssl';
SHOW VARIABLES LIKE '%ssl%';
如果为yes,表示服务端已经开启SSL
查看服务ssl等状态
SHOW STATUS LIKE 'Ssl_cipher';
STATUS或者\s
SSL: Cipher in use is DHE-RSA-AES256-SHA表示客户端已经 使用SSL连接
4.2客户端登陆
客户端无SSL登陆:
mysql -uroot -pzdh1234 或者 mysql -uroot -pzdh1234 --ssl=0
客户端开启SSL登陆:
mysql -uroot -hlocalhost -pzdh1234 --ssl-ca=/home/mysql/sslconfig/ca.pem
4.3创建用户强制使用SSL登陆:
GRANT ALL PRIVILEGES ON . TO 'ssluser'@'%' IDENTIFIED BY 'zdh1234' REQUIRE SSL;
本机登陆需要单独新增localhost
GRANT ALL PRIVILEGES ON . TO 'ssluser'@'localhost' IDENTIFIED BY 'zdh1234' REQUIRE SSL;
查看用户:
select host,user,password from mysql.user;
修改密码,需要重启mysql:
update user set password=password("zdh1234") where user="root" and host='zdh-11';
客户端无SSL登陆:
mysql -ussluser -pzdh1234
返回错误:ERROR 1045 (28000): Access denied for user 'ssluser'@'localhost' (using password: YES)
客户端开启SSL登陆:
mysql -ussluser -hlocalhost -pzdh1234 \
--ssl-ca=/home/mysql/sslconfig/ca.pem
如果不填密码或者--ssl-ca都无法登陆
mysql -ussluser -hlocalhost -pzdh1234 \
--ssl-cert=/home/mysql/sslconfig/client-cert.pem \
--ssl-key=/home/mysql/sslconfig/client-key.pem
mysql -ussluser -hlocalhost -pzdh1234 \
--ssl-ca=/home/mysql/sslconfig/ca.pem \
--ssl-cert=/home/mysql/sslconfig/client-cert.pem \
--ssl-key=/home/mysql/sslconfig/client-key.pem
4.4客户端连接时校验服务端认证:
由于创建server使用的服务器域名为zdh-11
校验失败,无法登陆:
mysql -uroot -hlocalhost -pzdh1234 --ssl-ca=/home/mysql/sslconfig/ca.pem --ssl-verify-server-cert
校验成功,可以登陆:
mysql -uroot -hzdh-11 -pzdh1234 --ssl-ca=/home/mysql/sslconfig/ca.pem --ssl-verify-server-cert
MySQL启用SSL连接的更多相关文章
- MySQL 使用 SSL 连接(附 Docker 例子)
查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql> SHOW VARIABLES LIKE 'have_ssl'; +-------- ...
- Mysql使用SSL连接
最近项目中用到了SSL连接,记录一下,环境为windows10,Mysql版本为5.6 查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql&g ...
- SpringBoot设置mysql的ssl连接
因工作需要,mysql连接需要开启ssl认证,本文主要讲述客户端如何配置ssl连接. 开发环境信息: SpringBoot: 2.0.5.RELEASE mysql-connector-java: 8 ...
- 在mysql启用远程连接
1.在ubuntu下面安装mysql. apt-get install mysql-server mysql-client -y 2.修改/etc/mysql/my.cnf文件. #bind-addr ...
- MySQL的SSL加密连接与性能开销
本文转载自:http://www.innomysql.net/article/23959.html(只作转载, 不代表本站和博主同意文中观点或证实文中信息) Contents [hide] 1 前言 ...
- 如何为MySQL服务器和客户机启用SSL
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: mysql5.7后有ssl新特性 自己搭建mysql ent ...
- mysql建立ssl安全连接的配置
mysql建立ssl安全连接的配置 1.环境.IP.安装包: centOS 5.4 虚拟机了两台服务器 mysql-5.1.48.tar.gz openssl-0.9.8b.tar.gz server ...
- Java连接mysql——Establishing SSL connection without server's identity verification is not recommended.
Establishing SSL connection without server's identity verification is not recommended. 出现这个错误的原因是因为m ...
- Mysql ssl 连接
在Azure创建了一个Mysql5.7服务,因为默认使用ssl连接,需要下载Azure的证书,并使用openssl生成客户端的证书.具体流程参考官方文档 大致步骤: 下载根证书, 安装openssl, ...
随机推荐
- Oracle中的instr函数
最近修改某个条件,由原来输入一个数据修改为可以输入多个,如图所示: 在实现时用到了regexp_substr函数进行分割连接起来的数据,查询时还用到了instr函数进行判断,但出现了问题,当子库存输入 ...
- GO瞬间并发数控制
var wg2 sync.WaitGroup wg2.Add(nums) xc :=0 parallelNum := plt.MaxParallel var waitCount int32 = 0 f ...
- MySQL(4):卸载MySQL
MySQL的安装是比较复杂的,一旦安装出现错误或者出现其他问题,我们想要完全卸载MySQL也是非常麻烦的,下面简单说下怎样可以完全干净的卸载MySQL 卸载步骤 第一步:用管理员的身份打开命令窗口,关 ...
- 【C/C++】C++ warning: control reaches end of non-void function return
控制到达非void函数的结尾. 一些本应带有返回值的函内数到容达结尾后可能并没有返回任何值. 这时候,最好检查一下是否每个控制流都会有返回值. 我是ostream声明的时候没有写return out; ...
- 匿名内部类与lamda表达式
1.为什么要使用lamda表达式 从JDK1.8开始为了简化使用者进行代码开发,专门提供有Lambda表达式的支持,利用此操作形式可以实现函数式的编程,对于函数式编程比较著名的语言:haskell,S ...
- Spring框架源码干货分享之三级缓存和父子工厂
记录并分享一下本人学习spring源码的过程,有什么问题或者补充会持续更新.欢迎大家指正! 环境: spring5.X + idea 建议:学习过程中要开着源码一步一步过 Spring中对象的创建宏观 ...
- OpenGL ES2 缩放移动
OpenGL ES Transformations with Gestures Ricardo Rendon Cepeda on December 10, 2013 Tweet Gestures: I ...
- Vector Demo
/* * vectorDemo.cpp * * Created on: Jul 17, 2014 * Author: lichfeng */ #include<vector> #inclu ...
- 花授粉优化算法-python/matlab
import numpy as np from matplotlib import pyplot as plt import random # 初始化种群 def init(n_pop, lb, ub ...
- CF508A Pasha and Pixels 题解
Content 有一个 \(n\times m\) 的矩阵,一开始全部格子被染成白色. 接下来有 \(k\) 个操作,每一个操作表示把一个格子染成黑色.问第一次出现 \(2\times 2\) 的全部 ...