MySQL OpenSSL – error 18 at 0 depth lookup:self signed certificate错误
MySQL是一个开源关系型数据库管理系统,SSL是安全套接字层的缩写,它是一种保护网络应用程序传输机密数据的标准安全技术。
在使用MySQL时,有时会遇到“error 18 at 0 depth lookup:self signed certificate”的错误,该错误通常是因为MySQL使用了自签名证书,导致OpenSSL不信任并拒绝连接。
阅读更多:MySQL 教程
解决方案
方法一:忽略SSL证书验证
忽略掉SSL证书验证并不是最好的方法,但是对于测试或开发环境可以使用。
在MySQL连接时,添加以下参数:
mysql -h hostname -u username -p --ssl-mode=DISABLED
方法二:生成自签名证书
如果允许使用自签名证书,可以通过以下步骤生成并安装:
- 生成自签名证书
openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt
该命令将生成一个有效期为1年的自签名证书。其中server.key
是私钥文件,server.crt
是证书文件。
- 修改MySQL配置文件
找到MySQL配置文件my.cnf
,添加以下配置:
[mysqld]
ssl-ca=/path/to/server.crt
ssl-cert=/path/to/server.crt
ssl-key=/path/to/server.key
- 重启MySQL服务器
sudo systemctl restart mysql
方法三:使用CA签名证书
较为安全的方法是使用CA签名证书,这样可以避免自签名证书的风险。
- 申请CA证书
需要先申请CA证书,可以通过第三方机构如VeriSign、GlobalSign和GoDaddy等获得。
- 安装CA证书
将CA证书安装到MySQL服务器上。
- 配置MySQL
找到MySQL配置文件my.cnf
,添加以下配置:
[mysqld]
ssl-ca=/path/to/ca.crt
ssl-cert=/path/to/server.crt
ssl-key=/path/to/server.key
- 重启MySQL服务器
sudo systemctl restart mysql
总结
MySQL OpenSSL – error 18 at 0 depth lookup:self signed certificate错误通常是由于MySQL使用了自签名证书导致的。针对这个问题,我们可以采用忽略SSL证书验证、生成自签名证书或使用CA签名证书等解决方法,具体选择哪种方法需要根据实际情况来决定。对于生产环境,建议使用CA签名证书,以保证安全性和稳定性。