Laravel项目MongoDB连接突发失效 TLS证书验证报错问题求助
Laravel + MongoDB Atlas 连接TLS证书验证失败解决方案
你遇到的
certificate verify failed报错属于TLS握手阶段的证书验证失败,和白名单、防火墙、项目代码本身无关,是本地运行环境的根证书信任链异常导致的。
- 第一步:先验证是否为证书问题(临时验证方案,仅本地调试用,禁止生产环境使用)
在Laravel项目的config/database.php配置文件中,找到mongodb连接的配置项,在options数组中添加两个参数:
修改后重启服务尝试连接,如果可以正常连接,即可确认是证书验证问题,继续走后续正式修复步骤。'connections' => [ 'mongodb' => [ // 原有其他配置保持不变 'options' => [ 'tls' => true, 'tlsAllowInvalidCertificates' => true, ] ] ] - 第二步:正式修复证书信任问题
- 下载最新的官方CA根证书包
cacert.pem,存放至本地PHP安装目录下的任意路径(比如C:\php\cacert.pem) - 打开本地PHP的配置文件
php.ini,找到以下两个配置项,去掉注释并填写你存放cacert.pem的绝对路径:
curl.cainfo = "C:\php\cacert.pem" openssl.cafile = "C:\php\cacert.pem"- 重启你的Web服务或命令行服务,移除第一步加的临时绕过配置,再次尝试连接即可。
- 下载最新的官方CA根证书包
- 其他可能的异常排查点:
- 检查本地系统时间是否和标准时间一致,时间偏差过大时会判定TLS证书未生效或已过期,也会触发该报错,同步系统时间后重试即可
- 检查PHP的mongodb扩展版本,若版本低于1.13,存在对Mongo Atlas新TLS证书的兼容问题,更新扩展到最新稳定版即可
内容的提问来源于stack exchange,提问作者MisterJäger
相关产品推荐
相关产品推荐

