wszystko, mam działający łańcuch certyfikatów (testowalny z OpenSSL), ale jakoś nie mogę poradzić Gitowi, aby załadował te certyfikaty.
Otrzymuję ten sam błąd „niezaufanego organu głównego” (SEC_E_UNTRUSTED_ROOT) niezależnie od tego, czy moja konfiguracja git wskazuje na istniejący czy fałszywy plik łańcucha certyfikatów.
Aby uzyskać szczegółowe informacje, sprawdź załączony zrzut ekranu.
Ustawienie używam .gitconfig
dla fałszywego pliku:
sslCAInfo = C:/tmp/foobar.crt
lub, dla prawdziwego pliku, który współpracuje z OpenSSL:
sslCAInfo = C:/tmp/ca-bundle.crt
Transkrypcja konsoli:
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.
set SSL_CERT_FILE=C:\tmp\ca-bundle.crt
powiedzenie openssl, gdzie znaleźć pakietC:\git config --get-all-- => error: wrong number of arguments
Odpowiedzi:
Zostałem dotknięty tym właśnie dzisiaj po nowej instalacji, więc oto, jak sobie z tym poradziłem:
Z twoich logów (nacisk jest mój):
git jest skonfigurowany do używania schannel (implementacja natywna Windows), ale schannel używa pakietu Windows certs, a nie pakietu cainfo.
Aby przełączyć się na openssl i użyć niestandardowego pliku pakietu, użyj tego:
git config --system http.sslbackend openssl
A teraz git honoruje pakiet CA przekazany w http.sslcainfo.
Alternatywnie, ponieważ mój błąd był problemem pakietu szyfrów, mogą Cię zainteresować następujące linki:
źródło
Miałem coś podobnego rok temu, więc mam nadzieję, że pamiętam -
Powinieneś mieć cały łańcuch certyfikatów w pliku crt. Sprawdź, czy masz wszystkie certyfikaty pośrednie między certyfikatem bitbucket a certyfikatem głównym (włącznie).
Możesz sprawdzić poprawny format dołączania ich w formacie pem (który moim zdaniem dotyczy twojego crt) tutaj .
Mój certyfikat został podpisany przez Comodo, kiedy miałem ten problem, ich certyfikat i pośredni nie były w domyślnym pakiecie ca dostarczanym przez większość systemów.
Mam nadzieję, że to pomaga!
Edycja: Teraz zauważyłem, że dzieje się tak również z fałszywym - spróbuj sprawdzić domyślne certyfikaty systemowe (każdy system ma takie certyfikaty). W systemie Windows możesz przejść do przystawki Certyfikaty Windows mmc .
źródło