Git scheint die Eigenschaft http.sslcainfo von .gitconfig zu erkennen, ignoriert sie jedoch bei der Ausführung? SEC_E_UNTRUSTED_ROOT

10

Alles in allem habe ich eine funktionierende Zertifikatskette (mit OpenSSL testbar), aber irgendwie kann ich Git nicht anweisen, diese Zertifikate zu laden.

Ich erhalte den gleichen Fehler "nicht vertrauenswürdige Stammberechtigung" (SEC_E_UNTRUSTED_ROOT), unabhängig davon, ob meine Git-Konfiguration auf eine vorhandene oder eine gefälschte Zertifikatkettendatei verweist.

Weitere Informationen finden Sie im beigefügten Screenshot.Geben Sie hier die Bildbeschreibung ein

Einstellung, die ich .gitconfigfür gefälschte Dateien verwende:

sslCAInfo = C:/tmp/foobar.crt

oder für echte Dateien, die mit OpenSSL funktionieren:

sslCAInfo = C:/tmp/ca-bundle.crt

Konsolentranskript:

C:\tmp>openssl version
OpenSSL 0.9.8h 28 May 2008

C:\tmp>git --version
git version 2.12.2.windows.2

C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/ca-bundle.crt

C:\tmp>dir
24.04.2017 13:45 10.875 ca-bundle.crt

c:\tmp>openssl s_client -state -connect https://mygithost:443 -CAfile .\ca-bundle.crt

Verify return code: 0 (ok)

C:\tmp git clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.

C:\tmp> git -c http.sslverify=false clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
Resoliving deltas: 100%, done.

C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/foobar.crt

C:\tmp\xxx\git pull
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.
Peter Muryshkin
quelle
Sie haben einen Tippfehler in Ihrer Git-Konfiguration: tml statt tmp
Tensibai
Ich finde es seltsam, dass git keinen Fehler mit fakepath auslöst. Sie sollten andere Konfigurationsebenen (global, Benutzer und Repo) überprüfen. Es gibt wahrscheinlich irgendwo einen Fallback
Tensibai
@Tensibai Bitte geben Sie Anweisungen oder einen Link zu Dokumenten an, nicht sicher, wie Sie das alles ausdrucken sollen. zB git config --global --list funktioniert nicht.
Peter Muryshkin
Git config --get-all sollte tun, um jede resultierende Konfiguration vom System aus anzuzeigen, global und lokal (ich kann nicht überprüfen, ob ich am Telefon bin, und das ist nur eine Vermutung. Die Problemumgehung könnte darin bestehen set SSL_CERT_FILE=C:\tmp\ca-bundle.crt,
openssl
C:\git config --get-all-- => error: wrong number of arguments
Peter Muryshkin

Antworten:

2

Wurde erst heute nach einer Neuinstallation davon getroffen. So bin ich darüber hinweggekommen:

Aus Ihren Protokollen (Schwerpunkt liegt bei mir):

fatal: Zugriff nicht möglich ...: schannel : next InitializeSecurityContext fehlgeschlagen:

git ist für die Verwendung von schannel (Windows native Implementierung) konfiguriert, aber schannel verwendet das Windows Certs-Bundle und nicht das Cainfo-Bundle.

Um zu openssl zu wechseln und eine benutzerdefinierte Bundle-Datei zu verwenden, gehen Sie wie folgt vor:

git config --system http.sslbackend openssl

Und jetzt wird git das in http.sslcainfo übergebene CA-Bundle ehren.

Alternativ, da mein Fehler ein Problem der Cypher Suite war, könnten Sie über die folgenden Links interessiert sein:

Tensibai
quelle
1

Ich hatte vor einem Jahr etwas Ähnliches, also hoffe ich, dass ich mich erinnere -

Sie sollten die gesamte Zertifikatkette in der CRT-Datei haben. Stellen Sie sicher, dass Sie alle Zwischenzertifikate zwischen Ihrem Bitbucket-Zertifikat und dem Root-Zertifikat (einschließlich) haben.

Sie können zum Anhängen von ihnen im pem - Format in das richtige Format einen Blick (was ich glaube Ihr Fall mit dem crt ist) über hier .

Mein Zertifikat wurde von Comodo signiert, als ich dieses Problem hatte. Das Zertifikat und das Zwischenprodukt waren nicht im Standard-Ca-Bundle enthalten, das von den meisten Systemen bereitgestellt wurde.

Hoffentlich hilft das!

Bearbeiten: Jetzt ist mir aufgefallen, dass es auch mit dem gefälschten passiert - versuchen Sie, die bekannten Standardzertifikate des Systems zu überprüfen (jedes System hat solche). Unter Windows können Sie das MMC-Snap-In für Windows-Zertifikate aufrufen .

Arieljannai
quelle