参考文章:https://blog.csdn.net/johnhill_/article/details/72831932 ,谢谢!
1.安装openssl
下载地址:http://slproweb.com/products/Win32OpenSSL.html
注意:安装完成后,记得配置系统path路径,指到bin目录。
具体路径请根据个人实际情况调整。
在cmd中,输入openssl,看到下图说明成功!
2.添加SSL支持
执行:
show variables like '%ssl%';
如果have_ssl不等于yes,说明还没有支持SSL。
添加SSL支持,打开my.ini文件:
[mysqld]
datadir=D:/app/MariaDB 10.3/data
port=3306
innodb_buffer_pool_size=511M
character-set-server=utf8
event_scheduler=ON
max_connections=1000
ssl
ssl-ca=D:/cert/ca-cert.pem
ssl-cert=D:/cert/server-cert.pem
ssl-key=D:/cert/server-key.pem
[client]
port=3306
plugin-dir=D:/app/MariaDB 10.3/lib/plugin
只需要添加标红行,重启mariadb服务就行。
重启之后再次执行看看have_ssl是否等于yes:
show variables like '%ssl%';
3.建立cert目录
D:\>mkdir cert
D:\>cd cert
4.配置证书
###为注释,蓝色是执行脚本,之下是执行结果。
###CA 私钥
D:\cert>openssl genrsa 2048 > ca-key.pem
Generating RSA private key, 2048 bit long modulus
.........+++++
................................................................................
................................................................................
.........................................................+++++
e is 65537 (0x010001) ###数字证书
D:\cert>openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:CN
Locality Name (eg, city) []:CN
Organization Name (eg, company) [Internet Widgits Pty Ltd]:test
Organizational Unit Name (eg, section) []:COM
Common Name (e.g. server FQDN or YOUR name) []:test.COM
Email Address []:test@test.COM ###服务器端的证书请求文件,A challenge password必须为空
D:\cert>openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem
Generating a 2048 bit RSA private key
................................................................................
+++++
.....+++++
writing new private key to 'server-key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:CN
Locality Name (eg, city) []:CN
Organization Name (eg, company) [Internet Widgits Pty Ltd]:test
Organizational Unit Name (eg, section) []:COM
Common Name (e.g. server FQDN or YOUR name) []:test.COM
Email Address []:test@test.COM Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:test.COM ###服务器端的RSA私钥
D:\cert>openssl rsa -in server-key.pem -out server-key.pem
writing RSA key ###服务器端的数字证书
D:\cert>openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
Signature ok
subject=C = CN, ST = CN, L = CN, O = test, OU = COM, CN = test.COM, emailAddre
ss = test@test.COM
Getting CA Private Key ###客户端的证书请求文件,A challenge password必须为空
D:\cert>openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem > client-req.pem
Generating a 2048 bit RSA private key
.................+++++
.......................................+++++
writing new private key to 'client-key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:CN
Locality Name (eg, city) []:CN
Organization Name (eg, company) [Internet Widgits Pty Ltd]:test
Organizational Unit Name (eg, section) []:COM
Common Name (e.g. server FQDN or YOUR name) []:test.COM
Email Address []:test@test.COM Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []: ###客户端的RSA私钥:
D:\cert>openssl rsa -in client-key.pem -out client-key.pem
writing RSA key ###客户端的数字证书
D:\cert>openssl x509 -sha1 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
Signature ok
subject=C = CN, ST = CN, L = CN, O = test, OU = COM, CN = test.COM, emailAddre
ss = test@test.COM
Getting CA Private Key
5.在my.ini中配置证书
[mysqld]
datadir=D:/app/MariaDB 10.3/data
port=3306
innodb_buffer_pool_size=511M
character-set-server=utf8
event_scheduler=ON
max_connections=1000
ssl
ssl-ca=D:/cert/ca-cert.pem
ssl-cert=D:/cert/server-cert.pem
ssl-key=D:/cert/server-key.pem
[client]
port=3306
plugin-dir=D:/app/MariaDB 10.3/lib/plugin
只需要添加标红行,重启mariadb服务就行。再次执行
show variables like '%ssl%';
返回结果:
文件说明
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: 客户端的数字证书.