升级Dart项目至1.24.3后pub get遇CERTIFICATE_VERIFY_FAILED错误求助
解决Dart 1.24.3升级后pub get SSL证书验证失败问题
我之前帮好几个开发者排查过类似的Dart版本升级后SSL证书问题,你的情况(从1.22.1升到1.24.3后pub get报CERTIFICATE_VERIFY_FAILED相关错误)其实是因为Dart 1.24.x开始对SSL证书验证的逻辑做了严格调整——之前1.22.1的宽松验证逻辑被移除了,所以之前能绕过去的自签名证书或者证书链不完整的问题,现在会直接触发报错。
下面给你几个针对性的解决方案,按优先级尝试:
一、先定位证书问题根源
先搞清楚是官方pub.dev的证书问题,还是你们公司内部镜像/代理的证书问题:
- 直接用浏览器访问
pub.dev,看地址栏的锁图标是否提示证书异常; - 如果你们用的是公司内部的pub镜像,那大概率是这个镜像用了自签名证书,或者证书链不完整。
二、针对性解决方案
方案1:让Dart信任自签名证书(适用于内部镜像场景)
如果是公司内部镜像的自签名证书导致的问题,你需要把证书添加到Dart的信任列表:
- 导出内部pub镜像的证书:用浏览器打开镜像地址,点击地址栏的锁图标,选择「查看证书」,然后导出为
.pem格式的文件; - 设置环境变量指定信任该证书:
- Windows终端执行:
set DART_VM_OPTIONS=--root-certs-file="C:\你的证书路径\cert.pem" - macOS/Linux终端执行:
export DART_VM_OPTIONS="--root-certs-file=/你的证书路径/cert.pem"
- Windows终端执行:
- 重新打开终端,执行
pub get测试。
方案2:临时跳过SSL验证(仅测试应急用,不推荐生产)
如果你只是临时需要完成依赖安装,可以强制跳过SSL验证(注意这有安全风险,不要在生产环境长期使用):
直接执行命令:
pub get --no-verify-ssl
或者先设置环境变量再执行pub get:
- Windows:
set PUB_NO_VERIFY_SSL=true - macOS/Linux:
export PUB_NO_VERIFY_SSL=true
方案3:更新系统根证书库
有时候是系统的根证书过期或缺失导致Dart验证失败,Dart会调用系统的根证书来做验证:
- Windows:打开「控制面板 → 网络和 Internet → Internet选项 → 内容 → 证书」,检查根证书是否有过期项,必要时手动更新根证书;
- macOS:打开「钥匙串访问」,在「系统根证书」里检查是否有异常,或者直接更新macOS到最新版本;
- Linux:执行命令更新ca-certificates包,比如Ubuntu:
sudo apt-get update && sudo apt-get install --reinstall ca-certificates
方案4:临时回退到Dart 1.22.1
如果以上方案都暂时无法解决,你可以先回退到之前的稳定版本应急:
- Windows用choco:
choco install dart-sdk --version=1.22.1 - 用asdf等版本管理工具:
asdf install dart 1.22.1 && asdf global dart 1.22.1
三、进一步排查的小技巧
你提到已经执行了pub --trace --verbosity all,可以重点看输出里的这些信息:
- 具体的
GET请求域名(比如是pub.dev还是你们内部的镜像地址); - 证书链的详细输出,看哪一环的证书验证失败了。
把这些信息整理出来,能更精准定位问题。
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

