mysql8.4开启加密传输

注:mysql是安装在docker容器下的,操作系统是centos7

参考博文 https://www.cnblogs.com/505donkey/p/17983120

本人第一次接触这个,有错误的请指教,因为人手问题被赶鸭子上架了

生成CA私钥

openssl genrsa 2048 > ca-key.pem

【参数说明】

  • genrsa:OpenSSL子命令,用于生成RSA私钥。
  • 2048:表示生成的RSA私钥的位数,2048位的RSA私钥目前被认为是安全的

生成CA证书

该证书可以用于SSL/TLS服务器的身份验证,或者用于创建其他的证书。

openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca-cert.pem

【参数说明】

  • req:OpenSSL子命令,用于处理证书签名请求(CSR)。
  • -new:生成一个新的证书签名请求。
  • -x509:生成一个自签名的X.509证书,而不是一个证书签名请求(X.509证书是一种公钥证书,广泛用于TLS和SSL协议)。
  • -nodes:不对生成的私钥进行加密,如果没有这个选项,OpenSSL会要求提供一个密码来加密私钥。
  • -days:设置证书的有效期,单位是天,以上表示证书的有效期是3650天。
  • -key:指定用于签名新证书的私钥文件。
  • -out:指定输出文件的名称。

【我的填写记录】

  • Country Name (2 letter code) [XX]:CN
  • State or Province Name (full name) []:SH
  • Locality Name (eg, city) [Default City]:SH
  • Organization Name (eg, company) [Default Company Ltd]:FZY
  • Organizational Unit Name (eg, section) []:FZY
  • Common Name (eg, your name or your server's hostname) []:此处不要填写直接回车,至于为啥我也不知道
  • Email Address []:未填写,直接回车

创建服务端的私钥,请求及证书

生成服务端私钥

openssl genrsa 2048 > server-key.pem

 生成服务端证书签名请求

openssl req -new -days 3650 -nodes -key server-key.pem -out server-req.pem
【注意】:填写信息和以上一样,以下填写修改为服务器ip地址

Common Name (eg, your name or your server's hostname) []:你的服务器ip

生成服务端证书

openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

【参数说明】

  • x509:OpenSSL子命令,用于处理X.509证书,X.509证书是一种公钥证书,广泛用于TLS和SSL协议。
  • -req:表示openssl期望输入的是一个证书签名请求,即CSR。
  • -in:用于指定输入文件,这里表示期望的CSR位于 server-req.pem 文件中。
  • -CA:指定CA(证书颁发机构)的公钥证书。
  • -CAkey:指定CA的私钥文件,两者结合使用来签发新的证书。
  • -set_serial:表示设置证书的序列号为01

创建客户端的私钥,请求及证书

openssl genrsa 2048 > client-key.pem
openssl req -new -days 3650 -nodes -key client-key.pem -out client-req.pem
【注意】:填写信息和以上一样,以下填写修改为服务器ip地址

Common Name (eg, your name or your server's hostname) []:你的mysql登录账户

生成客户端证书

openssl x509 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

以下命令执行完成后显示ok表示证书成功,否则重新执行一下吧,把原来生成的删掉

openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem

启用ssl配置

ssl-ca=/mysql实际数据目录/mysql_kyes/ca-cert.pem
ssl-cert=/mysql实际数据目录/mysql_kyes/server-cert.pem
ssl-key=/mysql实际数据目录/mysql_kyes/server-key.pem

配置完成后重启mysql服务,我的是docker就直接重启docker了(因为我的docker里面无法使用vim、vi是先把docker文件复制到宿主机下面然后修改后重新复制到docker容器下原来的位置)一下参考

把文件复制到宿主机
docker cp mysql:/etc/mysql/ssh/my.cnf /etc/mysql/ssh/my.cnf

宿主机文件复制到docker容器指定目录
docker cp /etc/my.cnf mysql:/etc/my.cnf

mysql是我的容器名称

重启容器
docker restart mysql

进入容器
docker exec -it mysql /bin/bash

而后登录mysql进行验证


验证是否成功开启加密传输
在MySQL中,启用加密传输通常是通过配置my.cnf(或my.ini在Windows上)文件中的ssl和ssl-ca等选项来实现的。

要检查MySQL是否已成功启用了加密传输,可以使用以下方法:

使用mysql客户端连接到数据库,并运行SHOW VARIABLES LIKE 'have_openssl';查询。如果返回YES,则表示MySQL支持OpenSSL,并且可以配置SSL。我这里是没有这个属性的不知道为什么,但是后面执行的都ok

使用SHOW STATUS LIKE 'Ssl_cipher';查询来检查正在使用的加密算法。如果返回了一个加密算法的列表,则表示SSL已经在使用中。

使用SHOW VARIABLES LIKE 'ssl_ca';查询来检查是否已经指定了CA证书文件。如果返回了文件路径,则表示已经指定了CA证书。

使用SHOW VARIABLES LIKE 'ssl_cert';和SHOW VARIABLES LIKE 'ssl_key';查询来检查是否已经指定了服务器的SSL证书和私钥。

如果以上任一步检查返回了期望的结果,则可以认为MySQL启用加密传输成功。

以下是一个简单的命令行示例,用于检查加密传输是否已启用:

mysql -u yourusername -p -h yourhost -e "SHOW VARIABLES LIKE 'have_openssl';"
mysql -u yourusername -p -h yourhost -e "SHOW STATUS LIKE 'Ssl_cipher';"
mysql -u yourusername -p -h yourhost -e "SHOW VARIABLES LIKE 'ssl_ca';"
mysql -u yourusername -p -h yourhost -e "SHOW VARIABLES LIKE 'ssl_cert';"
mysql -u yourusername -p -h yourhost -e "SHOW VARIABLES LIKE 'ssl_key';"

请将yourusername、yourhost替换为实际的用户名和主机地址。运行这些命令后,检查返回结果以确认加密传输是否已配置并运行。
  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值