前言
连接数据库的时候报如下错误
Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateExpiredException: NotAfter
这是mysql验证SSL证书失败导致的。
解决方法用两种
- 项目连接时配置关闭SSL
- mysql自身关闭SSL
查看SSL状态
查看MySQL的SSL是否开启
代码语言:javascript复制SHOW VARIABLES LIKE 'have_ssl';
这将显示是否支持 SSL 功能。
如果结果为 “YES”,表示 MySQL 支持 SSL。
查看SSL的配置
代码语言:javascript复制SHOW VARIABLES LIKE 'ssl%';
这将显示 SSL 相关的配置选项和参数,例如 ssl_ca、ssl_cert、ssl_key 等。
如果这些变量都有非空的值,表示 SSL/TLS 加密已启用,并且显示了相应的证书、密钥等信息。
关闭SSL
项目连接配置
在连接数据库的URL上添加useSSL=false
即可。
String url = "jdbc:mysql://your-mysql-server:3306/your-db-name?useSSL=false";
MySQL关闭SSL
要永久地关闭 MySQL 中的 SSL 连接功能,需要进行以下步骤:
- 编辑 MySQL 配置文件 my.cnf(或 my.ini),一般位于 MySQL 安装目录的 /etc 或 /etc/mysql 子目录下。
- 找到
[mysqld]
区块,并添加以下两行配置:
ssl=0
- 保存文件并退出编辑器。
- 重启 MySQL 服务。
sudo systemctl restart mysql
这样,SSL 连接就被完全禁用了,设置将在 MySQL 重启后生效。
要关闭 MySQL 的 SSL 连接,需要重启 MySQL 服务以使更改生效。
这是因为 SSL 连接是通过启动参数和加密证书配置的。
在没有重启 MySQL 的情况下,无法更改已经生效的 SSL 配置。
所以,要在 MySQL 中关闭 SSL 连接,你需要通过编辑配置文件、设置参数并重启 MySQL 服务。
这样才能确保服务器会以正确的配置重新启动,并在之后的连接中关闭 SSL。
开启SSL
要使 MySQL 开启 SSL,需要进行以下步骤:
在 my.cnf
文件中添加以下行:
[mysqld]
ssl-ca=path/to/ca.pem
ssl-cert=path/to/server-cert.pem
ssl-key=path/to/server-key.pem
将 path/to/ca.pem
、path/to/server-cert.pem
和 path/to/server-key.pem
替换为数字证书机构(CA)证书、服务器证书和服务器密钥的路径。