GitLab stellt eine Zertifikatsliste mit 1 Zertifikat bereit

GitLab stellt eine Zertifikatsliste mit 1 Zertifikat bereit

Ich versuche, das Omnibus-Installationsprogramm von GitLab auszuführen und das SSL-Zertifikat meiner Organisation zu verwenden, aber SSL-Clients beschweren sich, dass der Zertifikatsaussteller unbekannt ist. Wie soll ich Zwischenzertifikate in der Vertrauenskette konfigurieren?

Mein Setup beginnt mit der Ausführung der neuesten Version von GitLab und der Bereitstellung von Ports unter anderem für HTTPS und HTTP:

sudo docker run --detach --hostname myserver.myorg.org --publish 1443:443 --publish 1080:80 \
--publish 2222:22 --publish 5005:5005 --name gitlab1 \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:14.2.3-ce.0

Dadurch werden eine Reihe von Standardkonfigurationen in erstellt /srv/gitlab/config, also lege ich die URL des Servers in fest gitlab.rb:

external_url 'https://myserver.myorg.org'

Ich habe von meiner Organisation eine Zertifikatsdatei und eine Schlüsseldatei erhalten, also kopiere ich sie in das /srv/gitlab/config/sslVerzeichnis als myserver.myorg.org.crtund myserver.myorg.org.key. Dann konfiguriere ich den GitLab-Server neu:

sudo docker exec -it gitlab1 bash -c "gitlab-ctl reconfigure"

Nun versuche ich die SSL-Konfiguration zu validieren:

echo | gnutls-cli -p1443 myserver.myorg.org

Ich erhalte eine Reihe von Fehlern in der Ausgabe, unter anderem diese:

...
Processed 129 CA certificate(s).
Resolving 'myserver.myorg.org:1443'...
Connecting to '127.0.0.1:1443'...
- Certificate type: X.509
- Got a certificate list of 1 certificates.
...
- Status: The certificate is NOT trusted. The certificate issuer is unknown. 
*** PKI verification of server certificate failed...
*** Fatal error: Error in the certificate.

Das sieht so aus, als ob ich nicht die komplette Vertrauenskette habe. Der Aussteller für das Zertifikat unserer Organisation ist "CN=DigiCert TLS RSA SHA256 2020 CA1,O=DigiCert Inc,C=US". Ich habe ihre Zertifikate gefunden aufIhre Website, und habe genau dieses heruntergeladen:

wget https://cacerts.digicert.com/DigiCertTLSRSASHA2562020CA1-1.crt.pem

Ich habe die Textversion des Zertifikats extrahiert:

openssl x509 -in DigiCertTLSRSASHA2562020CA1-1.crt.pem -text
...
-----BEGIN CERTIFICATE-----
MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh
...
A7sKPPcw7+uvTPyLNhBzPvOk
-----END CERTIFICATE-----

Ich habe das an das Zertifikat meiner Organisation angehängt, /srv/gitlab/config/ssl/myserver.myorg.org.crtsodass jetzt zuerst das Zertifikat der Organisation und dann das Digicert-Zertifikat angezeigt wird.

-----BEGIN CERTIFICATE-----
... our organization's certificate ...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... Digicert certificate I just downloaded
-----END CERTIFICATE-----

Dies ist der Schritt, bei dem ich mir am wenigsten sicher bin. Ich stütze mich auf dieGitLab-Anweisungen:

Stellen Sie sicher, dass Sie die vollständige Zertifikatskette verwenden, um SSL-Fehler bei der Verbindung von Clients zu vermeiden. Die Reihenfolge der vollständigen Zertifikatskette sollte aus dem Serverzertifikat zuerst, allen Zwischenzertifikaten und zuletzt der Stammzertifizierungsstelle bestehen.

Bedeutet das, dass die beiden Zertifikate einfach in derselben Datei zusammengeheftet werden?

Wie dem auch sei, ich habe den reconfigureBefehl ausgeführt und noch einmal getestet:

sudo docker exec -it gitlab1 bash -c "gitlab-ctl reconfigure"
...
echo | gnutls-cli -p1443 myserver.myorg.org

Ich erhalte immer noch die gleichen Fehler, einschließlich „Ich habe eine Zertifikatsliste mit 1 Zertifikat erhalten.“ Das lässt mich vermuten, dass ich das Digicert-Zertifikat nicht richtig zur Kette hinzugefügt habe. Ich habe auch versucht, das Digicert-Zertifikat vor das Zertifikat unserer Organisation zu setzen.

Um sicherzugehen, dass die Zertifikate gültig sind, habe ichdieser Beitrag. openssl s_serverund openssl s_clienthaben gut zusammen funktioniert, daher denke ich, dass das Problem an meiner GitLab-Konfiguration liegt.

Antwort1

Als ich las,GitLab-DokumentationBei genauerem Hinsehen wurde mir klar, dass ich den Unterschied zwischen reconfigureund falsch verstanden hatte hup nginx.

Wenn der Inhalt Ihrer SSL-Zertifikate aktualisiert wurde, aber keine Konfigurationsänderungen an gitlab.rb vorgenommen wurden, wirkt sich die Neukonfiguration von gitlab-ctl nicht auf NGINX aus. Führen Sie stattdessen sudo gitlab-ctl hup nginx aus, damit NGINX die vorhandene Konfiguration und die neuen Zertifikate ordnungsgemäß neu lädt.

Ich dachte, reconfigureich könnte alles machen und hup nginxnoch viel mehr. Es stellte sich heraus, dass reconfigureSie keine Änderung in den Zertifikatsdateien bemerken, wenn Sie nichts in der /srv/gitlab/config/gitlab.rbDatei geändert haben.

Ich habe mein Problem behoben, indem ich diesen Befehl ausgeführt habe, nachdem ich das Zwischenzertifikat an Folgendes angehängt hatte /srv/gitlab/config/ssl/myserver.myorg.org.crt:

sudo docker exec -it gitlab1 bash -c "gitlab-ctl hup nginx"

verwandte Informationen