MySQL使用客户端证书登录

如何生成生成证书?

使用 openssl req 创建 X.509 证书,下面的命令创建有效期10年的私钥, 生成2个文件:

私钥 wfs-key.pem 和请求证书 wfs-req.pem

openssl req -newkey rsa:2048 -days 3650 -nodes -keyout wfs-key.pem -out wfs-req.pem
Country Name (2 letter code) [XX]:CN
Locality Name (eg, city) [Default City]:KS
Organization Name (eg, company) [Default Company Ltd]:ECI
#其他输出略

生成公钥 ca.pem/ca-key.pem (数据库服务器的自签名的 CA 证书 和 CA 私钥)

 #必须在数据库服务器上执行
openssl x509 -req -in wfs-req.pem -days 3650 -CA /var/lib/mysql/ca.pem -CAkey /var/lib/mysql/ca-key.pem -set_serial 01 -out wfs-cert.pem

校验公钥的有效性 (注: server-cert.pem 是服务器证书)

openssl verify -CAfile /var/lib/mysql/ca.pem /var/lib/mysql/server-cert.pem wfs-cert.pem

创建只有证书没有密码的账号

需要先卸载
component_validate_password 组件后才能创建无密码的账号

use mysql
select * from component;
uninstall component 'file://component_validate_password';
CREATE USER wfs REQUIRE SUBJECT '/C=CN/L=KS/O=ECI';

使用证书登录

这3个文件可用于其他机器 MySQL 客户端或 navicat 使用证书登录

#使用mysql客户端登录
mysql -h 192.168.55.44 -uwfs --ssl-cert wfs-cert.pem --ssl-key wfs-key.pem -p --ssl_ca=/var/lib/mysql/ca.pem
#使用证书登录 mysqlsh
mysqlsh mysql://wfs@192.168.55.44 --ssl-cert wfs-cert.pem --ssl-key wfs-key.pem

使用navicat 登录的话在登录窗口 ssl 页面处分别填入 key, cert, ca

补充:测试下三种认证方式 X509, SSL, none的区别

create user test_x509 identified by '123456' require X509;

create user test_any identified by '123456' require ssl;

create user test_none identified by '123456' require none;

select user,ssl_type from mysql.user; 

三个账号 ssl_type 分别为 X509, ANY, 空(默认是require none, 也就是说不写 require字句的话默认是空)

登录

client-cert.pem 和 client-key.pem 在数据库目录

mysql -h 192.168.55.44 -utest_x509 -p123456 --ssl-cert client-cert.pem --ssl-key client-key.pem

mysql -h 192.168.55.44 -utest_any -p123456

mysql -h 192.168.55.44 -utest_none -p123456 --ssl-mode=DISABLED

总结

三个账号均可以使用参数 --ssl-cert --ssl-key 登录, 登录后输入 \s 可以看到使用了 ssl,

test_x509 必须使用参数 --ssl-cert --ssl-key 登录, 否则不能登录

test_any, test_none 可以使用密码登录, 登录后输入 \s 可以看到使用了 ssl,

test_none 可以使用 --ssl-mode=DISABLED, 登录后输入 \s 显示 ssl 未使用,

test_any 不可以使用参数 --ssl-mode=DISABLED

test_none在服务器上通过 IP/127.0.0.1/主机名 登录时, 登录后输入 \s 可以看到使用了 ssl 且通过tcp协议, 通过 localhost 或不指定-h 登录时, 登录后输入 \s 可以看到是通过了socket连接,未使用ssl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贺浦力特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值