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使用的用户名