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连接的更多相关文章

  1. MySQL 使用 SSL 连接(附 Docker 例子)

    查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql> SHOW VARIABLES LIKE 'have_ssl'; +-------- ...

  2. Mysql使用SSL连接

    最近项目中用到了SSL连接,记录一下,环境为windows10,Mysql版本为5.6 查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql&g ...

  3. SpringBoot设置mysql的ssl连接

    因工作需要,mysql连接需要开启ssl认证,本文主要讲述客户端如何配置ssl连接. 开发环境信息: SpringBoot: 2.0.5.RELEASE mysql-connector-java: 8 ...

  4. 在mysql启用远程连接

    1.在ubuntu下面安装mysql. apt-get install mysql-server mysql-client -y 2.修改/etc/mysql/my.cnf文件. #bind-addr ...

  5. MySQL的SSL加密连接与性能开销

    本文转载自:http://www.innomysql.net/article/23959.html(只作转载, 不代表本站和博主同意文中观点或证实文中信息) Contents [hide] 1 前言 ...

  6. 如何为MySQL服务器和客户机启用SSL

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: mysql5.7后有ssl新特性 自己搭建mysql ent ...

  7. mysql建立ssl安全连接的配置

    mysql建立ssl安全连接的配置 1.环境.IP.安装包: centOS 5.4 虚拟机了两台服务器 mysql-5.1.48.tar.gz openssl-0.9.8b.tar.gz server ...

  8. 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 ...

  9. Mysql ssl 连接

    在Azure创建了一个Mysql5.7服务,因为默认使用ssl连接,需要下载Azure的证书,并使用openssl生成客户端的证书.具体流程参考官方文档 大致步骤: 下载根证书, 安装openssl, ...

随机推荐

  1. d3基础入门一-选集、数据绑定等核心概念

    引入D3 D3下载,本文下载时的版本为6.5.0 mkdir d3.6.5.0 unzip --help unzip d3.zip -d d3.6.5.0/ ls d3.6.5.0/ API.md C ...

  2. jenkins+Gitlab安装及初步使用

    安装包下载地址:https://packages.gitlab.com/gitlab/gitlab gitlab-cerpm 包国内下载地址: https://mirrors.tuna.tsinghu ...

  3. Springboot集成SpringSecurity

    一.Spring security 是什么? Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架. 它提供了一组可以在Spring应用上 ...

  4. ssm+ajax实现登陆

    ssm的搭建见上一章 1.数据协议层 public User selectByLoginnameAndPassword(@Param("loginname")String logi ...

  5. pipeline 步骤

    目录 一.简介 二.文件相关 删除当前目录 切换到目录 判断文件是否存在 判断是否为类Unix 返回当前目录 将内容写入文件 读取文件内容 二.制品相关 存取临时文件 三.命令相关 script sh ...

  6. 文件系统系列学习笔记 - inode/dentry/file/super(2)

    此篇文章主要介绍下linux 文件系统下的主要对象及他们之间的关系. 1 inode inode结构中主要包含对文件或者目录原信息的描述,原信息包括但不限于文件大小.文件在磁盘块中的位置信息.权限位. ...

  7. Python中冷门但非常好用的内置函数

    Python中有许多内置函数,不像print.len那么广为人知,但它们的功能却异常强大,用好了可以大大提高代码效率,同时提升代码的简洁度,增强可阅读性 Counter collections在pyt ...

  8. HGAME2021 week2 pwn writeup

    week2一共有4道pwn题 killerqueen 有格式化字符串漏洞,题不算难,但是故事情节真实让人摸不着头脑,但是仔细分析分析,理清楚逻辑就可以做了. 第一次choose1的时候,可以输入0,泄 ...

  9. Excel的内置功能,其实真的是够用了。(学习观)

    很多人问我,学好Excel是不是要背好多函数,是不是要会写VBA代码? 我说,那得看你能放多少时间和精力在Excel上. Excel的内置功能,其实真的是够用了:觉得不够用的,花几十块钱买个插件,也差 ...

  10. CF981B Businessmen Problems 题解

    Content 有一个长度为 \(n\) 的序列和长度为 \(m\) 的序列,两个序列中的元素都有一个编号 \(num\) 和一个值 \(val\),且同一个序列的元素之间的编号互不相同.现在从这两个 ...