windwos下mysql开启ssl
1.下载openssl
https://slproweb.com/products/Win32OpenSSL.html
2.配置openssl到环境变量
3.创建证书及密钥
mysql_ssl_rsa_setup.exe --datadir=d:/app/mysql/certs --verbose
参数说明
-d, --datadir=name 数据目录路径
-?, --help 显示帮助信息并退出
-s, --suffix=name X.509 证书通用名称属性的后缀
–uid=name 用于文件权限的有效用户的名称
-v, --verbose 详细模式
-V, --version 显示版本信息并退出
4.生成的证书及密钥文件
ca.pem 自签的CA证书,客户端连接也需要提供 ca-key.pem CA私钥 client-cert.pem 客户端连接服务器端需要提供的证书文件 client-key.pem 客户端连接服务器端需要提供的私钥文件 private_key.pem 私钥/公钥对的私有成员 public_key.pem 私钥/公钥对的共有成员 server-cert.pem 服务器端证书文件 server-key.pem 服务器端私钥文件
4.修改mysql配置文件,在[mysqld]节点下添加
ssl-ca=d:/app/mysql/certs/ca.pem ssl-cert=d:/app/mysql/certs/server-cert.pem ssl-key=d:/app/mysql/certs/server-key.pem
5.重启mysql服务
6.创建ssl登录用户
CREATE USER `sslroot`@`%` IDENTIFIED WITH mysql_native_password BY '123456' REQUIRE SSL PASSWORD EXPIRE NEVER;
7.使用ssl用户登录
8.查看mysql是否使用ssl
show variables like '%ssl%';
9.ssl-mode模式说明
在没有–ssl-mode选项的情况下 ,客户端尝试使用加密进行连接,如果无法建立加密连接,则回退到未加密的连接。这也是具有显式–ssl-mode=PREFFERED选项的行为 。 使用–ssl-mode=REQUIRED,客户端需要加密连接,如果无法建立连接则失败。 使用–ssl-mode=DISABLED,客户端使用未加密的连接。 使用–ssl-mode=VERIFY_CA 或 --ssl-mode=VERIFY_IDENTITY,客户端需要加密连接,并且还针对服务器 CA 证书和(使用 VERIFY_IDENTITY)针对其证书中的服务器主机名执行验证。
10.需要远程用户的受信任的CA的证书(双向认证)
CREATE USER `sslroot`@`%` IDENTIFIED WITH mysql_native_password BY '123456' REQUIRE X509 PASSWORD EXPIRE NEVER;
D:\app\mysql\bin>mysql -usslroot -p123456 --ssl-ca=d:\app\mysql\certs\ca.pem --ssl-cert=d:\app\mysql\certs\client-cert.pem --ssl-key=d:\app\mysql\certs\client-key.pem