参考:https://www.jb51.net/article/100432.htm、https://www.cnblogs.com/mysql-dba/p/7061300.html
一、SSL介绍
SSL(Secure Socket Layer:安全套接字层)利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。
SSL协议提供的功能主要有:
1、 数据传输的机密性:利用对称密钥算法对传输的数据进行加密。
2.、身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。
3、 消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。
如果用户的传输不是通过SSL的方式,那么其在网络中数据都是以明文进行传输的,而这给别有用心的人带来了可乘之机。所以,现在很多大型网站都开启了SSL功能。同样地,在我们数据库方面,如果客户端连接服务器获取数据不是使用SSL连接,那么在传输过程中,数据就有可能被窃取。
二、MySQL SSL配置和启用
1、查看SSL开启情况
SHOW VARIABLES LIKE '%ssl%';
Variable_name | Value |
+---------------+-----------------+
| have_openssl | YES |
| have_ssl | YES | #已经开启了SSL
| ssl_ca | ca.pem |
| ssl_capath | |
| ssl_cert | server-cert.pem |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | server-key.pem
2、利用mysql自带命令生成ssl配置文件
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
当运行完这个命令后,默认会在data_dir(windows初始路径C:\ProgramData\MySQL\MySQL Server 8.0\Data)目录下生成以下pem文件,这些文件就是用于启用SSL功能的:
ca-cert.pem: CA 证书, 用于生成服务器端/客户端的数字证书. |
服务器端配置
服务器端需要用到三个文件, 分别是: CA 证书, 服务器端的 RSA 私钥, 服务器端的数字证书, 我们需要在 [mysqld] 配置域下添加如下内容:
|