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:
- Ich habe das Root-CA-Zertifikat zu hinzugefügt
/etc/gitlab-runner/certs/ca.crt
. - Ich habe es auch mit einer Datei mit der Stammzertifizierungsstelle und der Zwischenzertifizierungsstelle in einer Kette versucht.
- Ich habe es
volumes = ["/cache", "/path/to-ca-cert-dir/ca.crt:/etc/gitlab-runner/certs/ca.crt:ro"]
derconfig.toml
Datei hinzugefügt. Aber ich bin fast sicher, dass ich es/path/to-ca-cert-dir
durch 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 restart
und der Job funktioniert.