mysql ssl 登陆_MySQL启用SSL连接

本文详细介绍了如何在MySQL中手动创建自签名证书,启用SSL连接,并配置my.cnf文件,包括服务端和客户端的证书配置。通过重启数据库并进行登陆验证,确保SSL连接的正确性和安全性。此外,还展示了创建用户并强制使用SSL登陆的方法以及客户端连接时的服务器认证校验。
摘要由CSDN通过智能技术生成

1.手动创建自认证证书

1.1 创建CA证书openssl genrsa 2048 > ca-key.pemopenssl 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-serve

作者:木木与呆呆

链接:https://www.jianshu.com/p/ee8ddbf82581

打开App,阅读手记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值