用於具有 CA 簽署憑證的 GitLab 伺服器的 GitLab Runner 失敗並顯示:憑證鏈中的自簽名憑證

用於具有 CA 簽署憑證的 GitLab 伺服器的 GitLab Runner 失敗並顯示:憑證鏈中的自簽名憑證

我的公司更改了憑證授權單位(它是單一 CA,現在我們有一個根 CA 和一個中間 CA)。我成功更改了 GitLab 實例中的配置,並轉移到運行器(即 Ubuntu 18.04.5 LTS 上)。我試圖遵循亞搏體育appGitLab文檔沒有成功。

我遵循預設方法這裡上面寫著“預設 - 讀取系統憑證”,因此我將憑證(CA 和中間憑證)新增到 Ubuntu CA 清單中。一切似乎都正常,因為運行程式出現在 GitLab 中。

我開始工作並得到:

Running with gitlab-runner 11.5.0 (3afdaba6)
  on RUN01 12ccbb74
Using Docker executor with image node:latest ...
Pulling docker image node:latest ...
Using docker image sha256:ab773999a02271b25a9f3bce46018fc3ad46a7f922a5e3e8712b6d1c7087c415 for node:latest ...
Running on runner-12ccbb74-project-73-concurrent-0 via (...)...
00:02
Fetching changes...
00:01
HEAD is now at 60b6860 Update dependency mocha to v9
fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@(...).git/': SSL certificate problem: unable to get issuer certificate
ERROR: Job failed: exit code 1

然後,我(在 GitLab 實例上)將完整鏈添加到證書文件中,錯誤更改為SSL certificate problem: self signed certificate in certificate chain.

我的邏輯*:它適用於 Ubuntu,但不適用於 Docker。所以我搬到了信任 Docker 和 Kubernetes 執行器的 TLS 憑證部分。

到目前為止我已經嘗試過但沒有成功:

  1. 我將根 CA 憑證新增至/etc/gitlab-runner/certs/ca.crt.
  2. 我還嘗試使用根 CA 和中間 CA 串聯的檔案。
  3. 我添加volumes = ["/cache", "/path/to-ca-cert-dir/ca.crt:/etc/gitlab-runner/certs/ca.crt:ro"]到文件中config.toml。但我幾乎確定我應該/path/to-ca-cert-dir用一些東西來代替。我只是不知道是什麼。

*更新:當我安裝 GitLab Runner 時,我遵循了使用適用於 Debian/Ubuntu/CentOS/RedHat 的 GitLab 儲存庫進行安裝,所以 Docker/K8s 指令沒有意義。我發布了一個回答關於我如何解決這個問題。

答案1

我能夠按照第三個選項使其工作針對 GitLab 伺服器的自簽名憑證支援的選項, 說的是:

讀取 PEM 憑證:GitLab Runner 從預定義檔讀取 PEM 憑證(不支援 DER 格式):

當 GitLab Runner 以 root 身分執行時,*nix 系統上的 /etc/gitlab-runner/certs/hostname.crt 。

如果您的伺服器位址是https://my.gitlab.server.com:8443/,在下列位置建立憑證檔案:/etc/gitlab-runner/certs/my.gitlab.server.com.crt。

所以我只是將完整的鏈(GitLab 憑證、中階、根)加入到檔案名稱中/etc/gitlab-runner/certs/<gitlab-url>.crt。重新啟動服務gitlab-runner restart並且作業正在執行。

相關內容