Gitlab-Runner执行报错:x509: certificate signed by unknown authority
解决GitLab Runner推送镜像时x509证书未知权威错误
这个错误的核心是Ubuntu系统和Docker服务未信任自建GitLab实例的SSL证书,按以下步骤处理:
1. 获取GitLab实例的SSL证书
- 用openssl命令从GitLab服务器导出证书(替换
gitlab.example.com为你的GitLab域名):openssl s_client -showcerts -connect gitlab.example.com:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > /tmp/gitlab.crt - 也可以直接从浏览器导出GitLab网站的SSL证书,再上传到Runner服务器的
/tmp目录。
2. 让Ubuntu系统信任该证书
- 将证书复制到系统证书存储目录:
sudo cp /tmp/gitlab.crt /usr/local/share/ca-certificates/gitlab.crt - 更新系统证书缓存:
sudo update-ca-certificates
3. 配置Docker信任该证书
推送镜像依赖Docker,需单独配置Docker信任证书:
- 创建对应GitLab容器仓库域名的证书目录(替换
registry.gitlab.example.com为你的镜像仓库地址):sudo mkdir -p /etc/docker/certs.d/registry.gitlab.example.com - 复制证书到该目录:
sudo cp /tmp/gitlab.crt /etc/docker/certs.d/registry.gitlab.example.com/ca.crt - 重启Docker服务使配置生效:
sudo systemctl restart docker
4. 重启GitLab Runner服务
确保Runner加载新的信任证书:
sudo systemctl restart gitlab-runner
额外检查
打开GitLab Runner的config.toml文件,在[[runners]]段落下添加证书路径配置(可选,但能确保Runner自身直接信任证书):
tls-ca-file = "/usr/local/share/ca-certificates/gitlab.crt"
内容的提问来源于stack exchange,提问作者Yassen Fouad Anis
相关产品推荐
相关产品推荐

