使用Jenkins通过HTTPS拉取GitLab仓库时遇证书验证失败问题
解决Jenkins通过HTTPS拉取GitLab仓库时的证书验证失败问题
我之前也踩过一模一样的坑,给你几个实用的解决办法,按优先级来选:
先搞清楚错误原因
这个报错fatal: unable to access ... server certificate verification failed本质是:Git连接GitLab服务器时,没法验证服务器的SSL证书——要么是GitLab用了自签名证书,要么是Jenkins所在服务器的CA信任存储里没包含GitLab证书的根CA。
1. 临时排查:跳过SSL证书验证(仅测试用,生产环境别碰!)
如果只是想快速确认是不是证书的锅,可以临时让Git跳过验证:
- 要么在Jenkins的Git仓库URL后面加参数:
https://your-token@your-gitlab-domain/your/repo.git?http.sslVerify=false - 要么在任务的执行shell步骤里先跑这条命令:
git config --global http.sslVerify false
⚠️ 划重点:这个方法会关闭所有Git操作的SSL验证,有安全风险,测试完立刻改回来!
2. 正规解法:把GitLab的CA证书导入服务器信任存储
这是生产环境推荐的做法,步骤很清晰:
- 下载GitLab的SSL证书:在Jenkins服务器上执行命令,把GitLab证书存成PEM格式:
记得把openssl s_client -showcerts -connect your-gitlab-domain:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > gitlab.crtyour-gitlab-domain换成你实际的GitLab域名。 - 复制证书到系统CA目录:
cp gitlab.crt /etc/ssl/certs/ - 更新CA证书缓存:
- Debian/Ubuntu系统用这条:
update-ca-certificates - RHEL/CentOS系统用这条:
update-ca-trust extract
- Debian/Ubuntu系统用这条:
- 重启Jenkins服务:让新的证书配置生效
systemctl restart jenkins
3. 在Jenkins Git插件里单独配置证书
不想修改服务器全局CA存储的话,也可以在Jenkins插件里单独设置:
- 进入Jenkins「全局系统配置」页面
- 找到「Git」配置区,点击「Add」按钮,选择「Configure Git plugin to use a specific SSL certificate」
- 上传你刚才下载的
gitlab.crt文件,保存配置 - 重启Jenkins后再测试拉取仓库
4. 检查Jenkins运行用户的Git配置
有时候Jenkins用jenkins用户运行,全局Git配置可能没生效到这个用户,你可以切换到jenkins用户单独配置:
su - jenkins -c "git config --global http.sslCAInfo /etc/ssl/certs/gitlab.crt"
这样Jenkins拉代码时就会用指定的CA证书验证GitLab服务器了。
最后提个醒:生产环境一定要用正规的证书导入方法,别图省事关验证;如果是GitLab的证书过期了,记得先更新GitLab的证书再操作。
内容的提问来源于stack exchange,提问作者Abhilash Reddy Bommareddy
相关产品推荐
相关产品推荐

