致命:无法访问“ https:// gitlab-ci-token:[MASKED] @ gitlab.mydomain.com / xxx.git /”:SSL证书问题:无法获取颁发者证书

时间:2019-06-02 00:42:34

标签: kubernetes certificate ssl-certificate x509certificate gitlab-ci-runner

我无法成功运行autodevops管道。我经历了多个教程,指南,问题,修复程序,解决方法,但是现在我需要您的支持。

我有一个家庭kubernetes集群(两个VM)和一个使用HTTPS的GitLab服务器。我已经设置了集群,并在GitLab组级别定义了它(安装了头盔,入口,赛跑者)。为了使Runner在gitlab中注册(我最初不接受证书),我需要做一些调整。

现在,当我运行autodevops管道时,在日志中出现如下错误:

Running with gitlab-runner 11.9.0 (692ae235)
  on runner-gitlab-runner-5976795575-8495m cwr6YWh8
Using Kubernetes namespace: gitlab-managed-apps
Using Kubernetes executor with image registry.gitlab.com/gitlab-org/cluster-integration/auto-build-image/master:stable ...
Waiting for pod gitlab-managed-apps/runner-cwr6ywh8-project-33-concurrent-0q7bdk to be running, status is Pending
Running on runner-cwr6ywh8-project-33-concurrent-0q7bdk via runner-gitlab-runner-5976795575-8495m...
Initialized empty Git repository in /testing/helloworld/.git/
Fetching changes...
Created fresh repository.
fatal: unable to access 'https://gitlab-ci-token:[MASKED]@gitlab.mydomain.com/testing/helloworld.git/': SSL certificate problem: unable to get issuer certificate

我尝试了许多变通办法,例如在/home/gitlab-runner/.gitlab-runner/certs/gitlab.mydomain.com.crt下添加域的CA证书,但仍然没有结果。

3 个答案:

答案 0 :(得分:1)

无法验证自签名证书时会发生错误。

除了添加CA证书之外,另一种解决方法是强制git使用全局选项不执行证书的验证:

$ git config --global http.sslVerify false

答案 1 :(得分:1)

gitlab运行程序未使用gitlab-runner安装所在的主机操作系统的信任库。您收到的错误是因为GitLab运行程序无法验证GitLab服务器提供的证书。这很可能是由两件事之一引起的。 1)您的GitLab服务器正在提供一个自签名证书。 2)如果您没有使用自签名证书,则GitLab运行程序将无法验证证书,因为缺少证书链中的证书之一(根CA证书或中间CA证书)。

解决方案: 您需要向GitLab-runner提供您希望它信任的证书。您的自签名CA证书,自签名证书(针对方案1)或完整的证书链:GitLab服务器证书>中间CA证书>根CA证书。

操作方法

1)创建一个fullCertChain.crt文件,并将完整的证书链粘贴到该文件中。

2)将fullCertChain.crt复制到gitlab-runner服务器上的某个位置,例如/ etc / gitlab-runner / ca-certs

3)在gitlab-runner服务器上修改/etc/gitlab-runner/config.toml。 在[[runners]]部分中,添加以下行:

[[runners]]
  tls-ca-file = "/etc/gitlab-runner/ca-certs/fullCertChain.crt"

4)重新启动gitlab-runner以获取所做的更改(我认为实际上不需要此步骤,但是我这样做是为了以防万一)

 sudo gitlab-runner start

5)验证跑步者是否正确启动了备份:

sudo gitlab-runner list

您的GitLab运行程序现在应该可以重新连接到您的https://gitlabHost

答案 2 :(得分:0)

此处提供了针对此问题的解决方案列表: https://gitlab.com/gitlab-org/gitlab-runner/issues/2659

最可能但最原始的解决方案是:打开/etc/gitlab-runner/config.toml并进行如下修改:

[[runners]]

环境= [“ GIT_SSL_NO_VERIFY = true”]

然后重新启动gitlab运行程序。