mysql5.7生成SSL证书

1、创建 CA 私钥和 CA 证书

生成一个 CA 私钥(多出来的文件:ca-key.pem)

shell 复制代码
openssl genrsa 2048 > ca-key.pem

通过 CA 私钥生成数字证书执行这个命令时, 会需要填写一些问题,如:CN,多出来的文件:ca-cert.pem

shell 复制代码
openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem

2、创建服务器端的 RSA 私钥和数字证书

创建服务器端的私钥和一个证书请求文件,需要回答几个问题,多出来文件:server-key.pem server-req.pem

shell 复制代码
openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem

将生成的私钥转换为 RSA 私钥文件格式

shell 复制代码
openssl rsa -in server-key.pem -out server-key.pem

使用原先生成的 CA 证书来生成一个服务器端的数字证书(多出来文件:server-cert.pem)

shell 复制代码
openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

3、创建客户端的 RSA 私钥和数字证书

为客户端生成一个私钥和证书请求文件(多出来文件:client-key.pem client-req.pem )

shell 复制代码
openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem > client-req.pem

将生成的私钥转换为 RSA 私钥文件格式

shell 复制代码
openssl rsa -in client-key.pem -out client-key.pem

为客户端创建一个数字证书(多出来文件:client-cert.pem )

shell 复制代码
openssl x509 -sha1 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

4、生成的具体证书说明

text 复制代码
SSL 配置及生成文件说明:在前面的步骤中, 我们已经生成了8个文件, 分别是:

ca-cert.pem: CA 证书, 用于生成服务器端/客户端的数字证书.

ca-key.pem: CA 私钥, 用于生成服务器端/客户端的数字证书.

server-key.pem: 服务器端的 RSA 私钥

server-req.pem: 服务器端的证书请求文件, 用于生成服务器端的数字证书.

server-cert.pem: 服务器端的数字证书.

client-key.pem: 客户端的 RSA 私钥

client-req.pem: 客户端的证书请求文件, 用于生成客户端的数字证书.

client-cert.pem: 客户端的数字证书.

5、服务器端配置

text 复制代码
ca-cert.pem

server-cert.pem

server-key.pem

6、校验证书

shell 复制代码
openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem

7.注意

text 复制代码
创建证书的时候输入的密码: xxx

创建证书的时候输入的邮箱: 可以为空

生成证书的时候

    根证书的Common Name字段的值置空
    
    服务端证书的Common Name字段的值设置为mysql数据库的ip
    
    客户端证书的Common Name字段的值设置为连接mysql使用的用户名

输出结果如下,即为通过:

shell 复制代码
server-cert.pem: OK

client-cert.pem: OK

如输出结果报错如下:

shell 复制代码
error 18 at 0 depth lookup:self signed certificate

修改Common Name就可以了

text 复制代码
服务端证书的Common Name字段的值设置为mysql数据库的ip
    
客户端证书的Common Name字段的值设置为连接mysql使用的用户名
相关推荐
a栋栋栋3 小时前
wsl 环境下用Docker 安装多版本MySQL
mysql·docker·容器
hsjkdhs6 小时前
MySQL 数据类型与运算符详解
数据库·mysql
武子康11 小时前
Java-122 深入浅出 MySQL CAP理论详解与分布式事务实践:从2PC到3PC与XA模式
java·大数据·数据库·分布式·mysql·性能优化·系统架构
网硕互联的小客服13 小时前
SSL部署完成,https显示连接不安全如何处理?
ssl·httpx
往事随风去13 小时前
面试官:mysql从数据库断开一段时间后,部分binlog已丢失,如何重建主从?
运维·数据库·mysql
Z_z在努力15 小时前
【杂类】应对 MySQL 处理短时间高并发的请求:缓存预热
数据库·mysql·缓存
格林威15 小时前
Linux使用-MySQL的使用
linux·运维·人工智能·数码相机·mysql·计算机视觉·视觉检测
吠品17 小时前
自动化SSL证书管理:应对域名SSL证书更新焦虑
运维·自动化·ssl
知其然亦知其所以然17 小时前
MySQL8.x 面试高频题:为什么一定要有主键?99%的人答不全
后端·mysql·面试
DemonAvenger18 小时前
MySQL索引失效全解析:从分析到优化,10年经验实战分享
数据库·mysql·性能优化