GitLab Runner für GitLab-Server mit CA-signiertem Zertifikat schlägt fehl mit: selbstsigniertes Zertifikat in der Zertifikatskette

GitLab Runner für GitLab-Server mit CA-signiertem Zertifikat schlägt fehl mit: selbstsigniertes Zertifikat in der Zertifikatskette

Mein Unternehmen hat die Zertifizierungsstelle geändert (es war eine einzelne Zertifizierungsstelle und jetzt haben wir eine Stammzertifizierungsstelle und eine Zwischenzertifizierungsstelle). Ich habe die Konfiguration in der GitLab-Instanz erfolgreich geändert und bin zum Runner gewechselt (der auf einem Ubuntu 18.04.5 LTS läuft). Ich habe versucht, denGitLab-Dokumenteohne Erfolg.

Ich bin dem Standardansatz gefolgtHierdort steht „Standard – Systemzertifikat lesen“, und so habe ich die Zertifikate (CA und Intermediate) zur Ubuntu-CA-Liste hinzugefügt. Alles schien zu funktionieren, da der Runner in GitLab angezeigt wird.

Ich beginne einen Job und bekomme:

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

Ich habe dann (auf der GitLab-Instanz) die komplette Kette zur Zertifikatsdatei hinzugefügt und der Fehler hat sich geändert in SSL certificate problem: self signed certificate in certificate chain.

Meine Logik*: Es funktioniert für Ubuntu, aber nicht für Docker. Also wechselte ich zumVertrauenswürdige TLS-Zertifikate für Docker- und Kubernetes-ExecutorenAbschnitt.

Was ich bisher erfolglos versucht habe:

  1. Ich habe das Root-CA-Zertifikat zu hinzugefügt /etc/gitlab-runner/certs/ca.crt.
  2. Ich habe es auch mit einer Datei mit der Stammzertifizierungsstelle und der Zwischenzertifizierungsstelle in einer Kette versucht.
  3. Ich habe es volumes = ["/cache", "/path/to-ca-cert-dir/ca.crt:/etc/gitlab-runner/certs/ca.crt:ro"]der config.tomlDatei hinzugefügt. Aber ich bin fast sicher, dass ich es /path/to-ca-cert-dirdurch etwas ersetzen sollte. Ich weiß nur nicht, wodurch.

*Update: Als ich den GitLab Runner installiert habe, folgte ichInstallation mithilfe des GitLab-Repository für Debian/Ubuntu/CentOS/RedHat, daher ergaben die Anweisungen von Docker/K8 keinen Sinn. Ich habe eineAntwortwie ich das lösen konnte.

Antwort1

Ich konnte es zum Laufen bringen, indem ich die dritte Option inUnterstützte Optionen für selbstsignierte Zertifikate für den GitLab-Server, das sagt:

Ein PEM-Zertifikat lesen: GitLab Runner liest das PEM-Zertifikat (DER-Format wird nicht unterstützt) aus einer vordefinierten Datei:

/etc/gitlab-runner/certs/hostname.crt auf *nix-Systemen, wenn GitLab Runner als Root ausgeführt wird.

Wenn Ihre Serveradressehttps://my.gitlab.server.com:8443/, erstellen Sie die Zertifikatsdatei unter: /etc/gitlab-runner/certs/my.gitlab.server.com.crt.

Also habe ich einfach die komplette Kette (GitLab-Zertifikat, Intermediate, Root) zu einem Dateinamen hinzugefügt /etc/gitlab-runner/certs/<gitlab-url>.crt. Habe die Dienste mit neu gestartet gitlab-runner restartund der Job funktioniert.

verwandte Informationen