数据库使用SSL加密连接

简介

数据库开通SSL加密连接是确保数据传输过程中安全性的关键措施,它通过加密数据、验证服务器身份、保护敏感信息、维护数据完整性和可靠性,同时满足行业标准和法规要求,进而提升用户体验和信任度,为企业的数据安全和业务连续性提供坚实保障。

具体步骤

系统环境:Ubuntu20.04
MySQL版本:5.7.9
首先,跳转到MySQL的bin目录,然后使用root权限生成所需证书:

#我的服务器中MySQL安装在/usr/local目录下
cd /usr/local/mysql/bin
#使用root用户
sudo su
#证书生成
./mysql_ssl_rsa_setup

最后会在data目录下生成相关证书。
在这里插入图片描述
查看证书期限

openssl x509 -in server-cert.pem -noout -dates

在这里插入图片描述
可以看到该证书有效期为10年,到期后或需要轮转证书,需要关闭MySQL,然后重新生成证书

因为使用root用户生成的文件权限是归属于root,所以需要将生成的证书文件权限分配给MySQL用户

 chown -R mysql:mysql data/

在这里插入图片描述

重启MySQL

systemctl restart mysqld

然后进入数据库查看是否已开启ssl连接:

show variables like '%ssl%';

在这里插入图片描述
接下来,我们可以创建需要使用ssl远程连接的用户或更新现有用户强制使用ssl连接:

#创建新用户
CREATE USER 'ssluser'@'%' IDENTIFIED BY 'password' REQUIRE SSL;
GRANT ALL PRIVILEGES ON *.* TO 'ssluser'@'%';
FLUSH PRIVILEGES;
#更新现有用户,%代表可以使用任何用户连接,也可以使用特定主机进行进行操作。
ALTER USER 'test'@'%' REQUIRE SSL;
FLUSH PRIVILEGES;

验证

查询用户的SSL要求

#我这里命令使用的是test用户,实际我是用root用户做的测试,具体用户看你的情况
SELECT user, host, ssl_type FROM mysql.user WHERE user = 'test';

在这里插入图片描述
使用Navicat进行远程连接:
首先需要先将客户端证书拷贝到本地:

sudo cp ca.pem client-cert.pem client-key.pem /home/test
#因为我是root用户直接拷贝的,所以使用SFTP下载到本地出现了权限不足问题,需要使用chown命令将证书文件权限分配给当前用户
sudo chown teat:test ca.pem client-cert.pem client-key.pem

需要拷贝CA证书(ca.pem),客户端证书(client-key.pem),客户端密钥(client-key.pem)。
然后在Navicat添加客户端证书:
在这里插入图片描述
测试连接
在这里插入图片描述
现在就表明已经配置成功了,然后可以进行抓包测试
在这里插入图片描述
可以看到抓包结果已经显示了TLS协议加密了,使用SSL连接会导致大约10%到30%的性能损耗,具体取决于加密算法、硬件性能和连接类型(长连接通常比短连接更有效)。

今日推荐

小说:《龙符》
简介:苍茫大地,未来变革,混乱之中,龙蛇并起,谁是真龙,谁又是蟒蛇?或是天地众生,皆可成龙?朝廷,江湖门派,世外仙道,千年世家,蛮族,魔神,妖族,上古巫道,势力,相互纠缠,因缘际会。
在这里插入图片描述

相关推荐

  1. SSH数据加密传输:安全连接新体验

    2024-07-15 10:00:04       26 阅读
  2. MySQL数据库SSL连接测试

    2024-07-15 10:00:04       32 阅读
  3. Linux:使用ssl加密网站为https

    2024-07-15 10:00:04       31 阅读
  4. 【如何在Qt C++中使用SSL和TLS加密传输数据?】

    2024-07-15 10:00:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 10:00:04       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 10:00:04       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 10:00:04       57 阅读
  4. Python语言-面向对象

    2024-07-15 10:00:04       68 阅读

热门阅读

  1. AcWing 667. 游戏时间

    2024-07-15 10:00:04       24 阅读
  2. 面向对象的开发方法

    2024-07-15 10:00:04       26 阅读
  3. 板级调试小助手(3)基于PYNQ的OLED视频显示

    2024-07-15 10:00:04       24 阅读
  4. 小白学习微信小程序的音频合成和语音识别技术

    2024-07-15 10:00:04       27 阅读
  5. 关系型数据库和非关系型数据库

    2024-07-15 10:00:04       26 阅读
  6. 国密证书(gmssl)在Kylin Server V10下安装

    2024-07-15 10:00:04       19 阅读
  7. GE DS200CVMAG1AEB控制器 处理器 模块

    2024-07-15 10:00:04       22 阅读
  8. 【Go系列】 Sync并发控制

    2024-07-15 10:00:04       26 阅读
  9. 对AAC解码的理解

    2024-07-15 10:00:04       22 阅读