CA 署名証明書を持つ GitLab サーバーの GitLab Runner が次のエラーで失敗する: 証明書チェーン内の自己署名証明書

CA 署名証明書を持つ GitLab サーバーの GitLab Runner が次のエラーで失敗する: 証明書チェーン内の自己署名証明書

私の会社は認証局を変更しました(以前は単一のCAでしたが、現在はルートCAと中間CAがあります)。GitLabインスタンスの設定を変更して成功し、ランナー(Ubuntu 18.04.5 LTS)に移行しました。GitLabドキュメント成功しませんでした。

私はデフォルトのアプローチに従いましたここ「デフォルト - システム証明書を読み取ります」と表示されているので、証明書 (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 Executor の 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

私は3番目のオプションに従ってそれを動作させることができました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と、ジョブが機能しています。

関連情報