MYSQL版本8.0.32,默认是开启ssl的,同时也是自带证书的在/var/lib/mysql/下
jdbc连接Mysql数据库需要使用SSL时,可以按一下步骤进行设置:
前置条件(可跳过):
新建SSL用户
CREATE USER 'qq'@'%' IDENTIFIED BY '你的密码';GRANT ALL ON *.* TO 'qq'@'%';ALTER USER 'qq'@'%' IDENTIFIED WITH mysql_native_password BY 'password';caching_sha2_password
对用户使用ssl
ALTER USER 'qq'@'%' REQUIRE SSL;FLUSH PRIVILEGES;
查看用户情况
SELECT ssl_type From mysql.user Where user="qq"
4取消ssl
update user set ssl_type='' where user='qq';FLUSH PRIVILEGES;
准备SSL证书等
查看是否启用ssl
show variables like '%ssl%';have_opensslYEShave_sslYES
MYSQL验证SSL
mysql --ssl-ca=/var/lib/mysql/ca.pem --ssl-cert=/var/lib/mysql/client-cert.pem --ssl-key=/var/lib/mysql/client-key.pem --ssl-cipher=AES128-SHA -u tq -p
进入后输入\s查看ssl加密方式,如果有则为加密ssl登录
jdbc接入
Mysql服务器开启SSL配置
所在的机器导入ca证书,导入到truststore 文件
keytool -importcert -trustcacerts -alias MySQLCACert -file ca.pem -keystore truststore -storepass mypassword
直接导入到JDK导入证书(部署到本机)
在cmd命令中直接执行该命令
keytool -import -trustcacerts -v -alias Mysql -file "C:\ProgramData\MySQL\MySQL Server 8.0\Data\ca.pem" -keystore "C:\Program Files\Java\jdk1.8.0_192\jre\lib\security\cacerts"
这样做,自己一个人开发,一点问题都没有。但是放到生产就问题大了。
查看本地证书
keytool -list -keystore truststore
mysql连接设置证书
设置useSSL=true
配置trustCertificateKeyStoreUrl为证书的路径
配置trustCertificateKeyStorePassword为第2步生成的mypassword
本地文件:
jdbc:mysql://127.0.0.1:3306/test?useSSL=true&trustCertificateKeyStoreUrl=file:path_to_truststore_file&trustCertificateKeyStorePassword=mypassword
{“allowPublicKeyRetrieval”: “true”,“useSSL”:“true”,“trustCertificateKeyStoreUrl”:“file:I:\REDEMPTION\ca.pem”,“trustCertificateKeyStorePassword”:“mypass”}
网络文件:
"jdbc:mysql://ip:3306/test?useUnicode=true&useSSL=true&trustCertificateKeyStorePassword=123456&serverTimezone=Asia/Shanghai&trustCertificateKeyStoreUrl=http://localhost:8080/key
{“allowPublicKeyRetrieval”: “true”,“useSSL”:“true”,“trustCertificateKeyStoreUrl”:“http://localhost:7776/truststore”,“trustCertificateKeyStorePassword”:“mypass”}
参考:
[1] https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-using-ssl.html
导入证书
https://www.clzg.cn/article/309424.html
java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
https://blog.csdn.net/qq_47433566/article/details/123581123
mysql使用jdbc连接增加ssl认证
https://blog.csdn.net/qq_42430287/article/details/123733498
新增证书
http://www.884358.com/mysql-ssl/
自建CA生成证书详解
https://blog.csdn.net/weixin_40228200/article/details/121895791
docker mysql8使用SSL及使用openssl生成自定义证书
https://blog.csdn.net/weixin_43933728/article/details/127338271
来源地址:https://blog.csdn.net/weixin_38689747/article/details/128851289