基于标签初始化Repo失败求助:SSL证书验证错误问题
解决Repo初始化时SSL证书验证失败的问题
这是repo工具拉取Google Gerrit仓库时常见的SSL证书验证问题,我整理了几个实用的解决思路,你可以按顺序尝试:
1. 临时跳过SSL验证(快速测试用)
如果只是临时需要完成初始化,可以通过设置环境变量让Git跳过SSL证书验证,执行命令:
GIT_SSL_NO_VERIFY=true repo init -u ssh://10.xxx.xx.xx:xxxxx/test-manifest -b ref/tags/development -m lat_dev.xml
注意:这是临时方案,会降低安全性,不建议在生产环境长期使用
2. 手动添加Google Gerrit的证书到系统信任库
如果是系统缺少对应证书导致的验证失败,可以手动下载并信任证书:
步骤:
- 先提取Gerrit的SSL证书:
openssl s_client -showcerts -connect gerrit.googlesource.com:443 < /dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' > gerrit.crt
- 根据你的系统类型添加证书:
- Ubuntu/Debian系:
sudo cp gerrit.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates - CentOS/RHEL系:
sudo cp gerrit.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust extract
- Ubuntu/Debian系:
添加完成后再重新执行repo init命令即可。
3. 更新Repo工具到最新版本
旧版本的repo可能存在证书兼容问题,你可以手动更新repo脚本:
- 先删除报错的旧repo目录:
rm -rf .repo/repo
- 下载最新的repo脚本:
curl https://storage.googleapis.com/git-repo-downloads/repo > repo
- 赋予执行权限:
chmod a+x repo
- 用本地的repo脚本执行初始化:
./repo init -u ssh://10.xxx.xx.xx:xxxxx/test-manifest -b ref/tags/development -m lat_dev.xml
4. 检查网络代理设置
如果你正在使用代理,可能是代理的SSL证书导致验证失败:
- 尝试临时关闭代理后再执行:
unset http_proxy https_proxy repo init -u ssh://10.xxx.xx.xx:xxxxx/test-manifest -b ref/tags/development -m lat_dev.xml
- 或者配置Git信任代理证书(临时方案):
git config --global http.sslVerify false repo init -u ssh://10.xxx.xx.xx:xxxxx/test-manifest -b ref/tags/development -m lat_dev.xml
内容的提问来源于stack exchange,提问作者venkatraman Balasubramanian




