标签:java ssl 证书 SSL cert mysql path true
下午连现场mysql库时候报错:
javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:129) at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
这错误出现原因是现场因为三级等保要求开启了mysql的ssl验证(MySQL5.7+默认是开启SSL连接),需要我们主动配置ssl证书信息或者明确指出不适用ssl
1、明确不使用ssl 加参数 useSSL=false
启动ssl增加性能损耗,如果不是为了等保等要求,确保安全情况下,可以不开启ssl:
jdbc:mysql://172.28.77.197:3306/admin?characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
2、启用ssl
ssl.cert.path = /home/app/cert ssl.config = true&verifyServerCertificate=true&requireSSL=true&clientCertificateKeyStoreUrl=file:${ssl.cert.path}/keystoremysql&clientCertificateKeyStorePassword=password456&trustCertificateKeyStoreUrl=file:${ssl.cert.path}/truststoremysql&trustCertificateKeyStorePassword=password123 spring.datasource.url = jdbc:mysql://1.2.3.4:3306/db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=${ssl.config}
因为加上ssl认证后url太长了,所以提取了两个变量
ssl.cert.path表示生成的两个证书文件存放路径
ssl.config的value里根据证书生成的参数对应修改,如果不需要ssl认证值设置为false即可
3、查看mysql是否启用ssl
可以在mysql输入一下命令
show variables like '%ssl%';
have_openssl和have_ssl为yes表示mysql开启了ssl(这种没有强制)
4、强制用户启动ssl
select ssl_type from user where user = 'xx' ;
如果结果为 ANY 则表示强制用户使用ssl
GRANT USAGE ON *.* TO 'xx'@'%' REQUIRE SSL;
5、开启ssl配置
[mysqld] ssl-ca=/etc/mysql/ca-cert.pem ssl-cert=/etc/mysql/server-cert.pem ssl-key=/etc/mysql/server-key.pem
修改完配置文件,重启mysql服务
标签:java,ssl,证书,SSL,cert,mysql,path,true 来源: https://www.cnblogs.com/whaleX/p/16265027.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。