我的公司更改了憑證授權單位(它是單一 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 憑證部分。
到目前為止我已經嘗試過但沒有成功:
- 我將根 CA 憑證新增至
/etc/gitlab-runner/certs/ca.crt
. - 我還嘗試使用根 CA 和中間 CA 串聯的檔案。
- 我添加
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
並且作業正在執行。