MySQL中的SSL设置

前言

连接数据库的时候报如下错误

Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateExpiredException: NotAfter

这是mysql验证SSL证书失败导致的。

解决方法用两种

  • 项目连接时配置关闭SSL
  • mysql自身关闭SSL

查看SSL状态

查看MySQL的SSL是否开启

1
SHOW VARIABLES LIKE 'have_ssl';

这将显示是否支持 SSL 功能。

如果结果为 “YES”,表示 MySQL 支持 SSL。

查看SSL的配置

1
SHOW VARIABLES LIKE 'ssl%';

这将显示 SSL 相关的配置选项和参数,例如 ssl_ca、ssl_cert、ssl_key 等。

如果这些变量都有非空的值,表示 SSL/TLS 加密已启用,并且显示了相应的证书、密钥等信息。

关闭SSL

项目连接配置

在连接数据库的URL上添加useSSL=false即可。

1
String url = "jdbc:mysql://your-mysql-server:3306/your-db-name?useSSL=false";

MySQL关闭SSL

要永久地关闭 MySQL 中的 SSL 连接功能,需要进行以下步骤:

  1. 编辑 MySQL 配置文件 my.cnf(或 my.ini),一般位于 MySQL 安装目录的 /etc 或 /etc/mysql 子目录下。

  2. 找到 [mysqld] 区块,并添加以下两行配置:

1
ssl=0
  1. 保存文件并退出编辑器。

  2. 重启 MySQL 服务。

1
sudo systemctl restart mysql

这样,SSL 连接就被完全禁用了,设置将在 MySQL 重启后生效。

要关闭 MySQL 的 SSL 连接,需要重启 MySQL 服务以使更改生效。

这是因为 SSL 连接是通过启动参数和加密证书配置的。

在没有重启 MySQL 的情况下,无法更改已经生效的 SSL 配置。

所以,要在 MySQL 中关闭 SSL 连接,你需要通过编辑配置文件、设置参数并重启 MySQL 服务。

这样才能确保服务器会以正确的配置重新启动,并在之后的连接中关闭 SSL。

开启SSL

要使 MySQL 开启 SSL,需要进行以下步骤:

my.cnf 文件中添加以下行:

1
2
3
4
[mysqld]
ssl-ca=path/to/ca.pem
ssl-cert=path/to/server-cert.pem
ssl-key=path/to/server-key.pem

path/to/ca.pempath/to/server-cert.pempath/to/server-key.pem 替换为数字证书机构(CA)证书、服务器证书和服务器密钥的路径。