Korzystam z Git w systemie Windows. Zainstalowałem pakiet msysGit. Moje repozytorium testowe ma samopodpisany certyfikat na serwerze. Mogę bez problemu uzyskiwać dostęp do repozytorium i korzystać z niego przy użyciu protokołu HTTP. Przejście na HTTPS powoduje błąd:
Problem z certyfikatem SSL: nie można uzyskać lokalnego certyfikatu wystawcy.
Mam samopodpisany certyfikat zainstalowany w Zaufanych głównych urzędach certyfikacji mojego komputera z systemem Windows 7. Mogę przeglądać adres URL repozytorium HTTPS w Internet Explorerze bez komunikatów o błędach.
W tym poście Philipa Kelleya wyjaśniono, że cURL nie używa magazynu certyfikatów komputera klienckiego. Postępowałem zgodnie z radą posta na blogu, aby utworzyć prywatną kopię curl-ca-bundle.crt
i skonfigurować Gita, aby z niej korzystał. Jestem pewien, że Git używa mojej kopii. Jeśli zmienię nazwę kopii; Git skarży się, że brakuje pliku.
Wkleiłem w certyfikacie, jak wspomniano w poście na blogu, nadal pojawia się komunikat „nie mogę uzyskać certyfikatu lokalnego wystawcy”.
Sprawdziłem, że Git nadal działa, klonując repozytorium GitHub za pośrednictwem HTTPS.
Jedyne, co widzę, różni się od posta na blogu, to to, że mój certyfikat jest katalogiem głównym - nie ma łańcucha, aby go osiągnąć. Mój certyfikat pierwotnie pochodził z kliknięcia linku Menedżer IIS8 IIS „Utwórz certyfikat z podpisem własnym”. Może to sprawia, że certyfikat różni się w pewien sposób od tego, czego oczekuje cURL.
Jak mogę zmusić Git / cURL do zaakceptowania samopodpisanego certyfikatu?
{ "strict-ssl": false }
. Nie dziękuj mi, dziękuję temu facetowi: stapp.space/fight-with-2 Walczyłem z tym błędem przez prawie 5 godzin, prosto !!Odpowiedzi:
Otwórz Git Bash i uruchom polecenie, jeśli chcesz całkowicie wyłączyć weryfikację SSL.
Uwaga: to rozwiązanie może otworzyć cię na ataki typu man-in-the-middle . Dlatego włącz ponownie weryfikację jak najszybciej:
źródło
git -c http.sslVerify=false clone https://domain.com/path/to/git
Problem polega na tym, że git domyślnie korzysta z backendu kryptograficznego „Linux”.
Począwszy od Git dla Windows 2.14, możesz teraz skonfigurować Git do korzystania z SChannel, wbudowanej warstwy sieci Windows jako backendu kryptograficznego. Oznacza to, że będzie korzystał z mechanizmu przechowywania certyfikatów systemu Windows i nie trzeba jawnie konfigurować mechanizmu przechowywania curl CA: https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v= vs.85) .aspx
Po prostu wykonaj:
To powinno pomóc.
Używanie Schannel jest teraz standardowym ustawieniem podczas instalowania gita dla Windows, zaleca się również, aby nie sprawdzać repozytoriów przez SSH, jeśli to możliwe, ponieważ https jest łatwiejszy do skonfigurowania i jest mniej prawdopodobne, że zostanie zablokowany przez zaporę ogniową, co oznacza mniejsze prawdopodobieństwo awarii.
źródło
git config --global http.sslCAInfo <my-server-self-signed-cert.pem>
nie będzie działać. Skonfigurowałem,http.sslCAInfo
aby używać samopodpisanego certyfikatu dla mojego serwera, i to jest powód (może nie być taki sam jak OP), że napotkałem „Problem z certyfikatem SSL: nie mogę uzyskać lokalnego certyfikatu wystawcy”, gdy npgit clone https://github.com/Microsoft/vscode.git
. Wreszcie użyłem odpowiedzi z stackoverflow.com/a/47196562/1323552 (Ben PP Tung), aby dostroić konfigurację sslCAInfo specyficzną dla mojego serwera git, aby ją rozwiązać.Też miałem ten problem. W moim przypadku próbowałem uzyskać hak Git po odbiorze, aby aktualizować kopię roboczą na serwerze przy każdym wypychaniu. Próbowałem postępować zgodnie z instrukcjami na blogu, do którego prowadziłeś link. Nie działało to również dla mnie, a nadpisywanie ustawień dla poszczególnych użytkowników również nie działało.
Ostatecznie musiałem wyłączyć weryfikację protokołu SSL (jak wspomniano w artykule) dla Git jako całości. Nie jest to idealne rozwiązanie, ale zadziała, dopóki nie znajdę lepszego.
Edytowałem plik tekstowy konfiguracji Git (z moją ulubioną neutralną aplikacją kończącą linię, taką jak Notepad ++) znajdującą się pod adresem:
W bloku [http] dodałem opcję wyłączenia sslVerify. Kiedy skończyłem, wyglądało to tak:
To załatwiło sprawę.
UWAGA:
Wyłącza to weryfikację SSL i nie jest zalecane jako rozwiązanie długoterminowe.
Możesz wyłączyć to repozytorium, które wciąż nie jest świetne, ale lokalizuje ustawienie.
Wraz z pojawieniem się LetsEncrypt.org jest teraz dość proste, zautomatyzowane i darmowe konfigurowanie SSL jako alternatywy dla certyfikatów z podpisem własnym i neguje potrzebę wyłączenia sslVerify.
źródło
sslCAinfo
wpisu konfiguracji; ale nie oceniam odpowiedzi, ponieważ nie ma sensu trwale wyłączać SSL dla git w całym systemie (czy próbowałeś go wyłączyć w całym systemie, następnie sklonować, a następnie włączyć ponownie, a następnie wyłączyć w lokalna konfiguracja git dla nowo sklonowanego repozytorium?).git -c http.sslVerify=false clone https://...
kiddailey Myślę, że było dość blisko, jednak nie wyłączyłbym weryfikacji ssl, a raczej po prostu podałem lokalny certyfikat:
W pliku konfiguracyjnym Git
Lub za pomocą wiersza poleceń:
źródło
git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt
git config --global http.sslCAinfo /c/Program\ Files\ \(x86\)/Git/bin/curl-ca-bundle.crt
git config --global http.sslCAinfo /opt/local/share/curl/curl-ca-bundle.crt
git config --list --show-origin
sprawdzić, gdzie ustawiona jest konfiguracja http.sslCAinfoJa także zmierzyłem się z tym problemem. I wreszcie udało się rozwiązać, uzyskując wskazówki z tego bloga MSDN .
Aktualizacja
W rzeczywistości musisz dodać certyfikat do pliku certyfikatów git curl-ca-bundel.cert, który znajduje się w katalogu Git \ bin.
Kroki
Na koniec sprawdź status. Pamiętaj, że przed edycją wykonaj kopię zapasową pliku curl-ca-bundle.crt, aby zachować bezpieczeństwo.
źródło
ca-bundle.crt
i znajdować się wmingw64\ssl\certs
lubmingw32\ssl\certs
.Odpowiedź na to pytanie Użycie makecert dla programistów SSL naprawiło to dla mnie.
Nie wiem dlaczego, ale certyfikat utworzony przez prosty link „Utwórz certyfikat z podpisem własnym” w Menedżerze IIS nie rozwiązuje problemu. Podążyłem za tym podejściem w powiązanym pytaniu dotyczącym tworzenia i instalowania samopodpisanego katalogu głównego CA; następnie używając go do wystawienia certyfikatu uwierzytelnienia serwera dla mojego serwera. Zainstalowałem oba z nich w IIS.
To sprawia, że moja sytuacja jest taka sama jak w blogu wymienionym w pierwotnym pytaniu. Po skopiowaniu / wklejeniu certyfikatu głównego do curl-ca-bundle.crt kombinacja git / curl została spełniona.
źródło
Aby uniknąć całkowitego wyłączenia weryfikacji ssl lub duplikowania / zhakowania dołączonego pliku certyfikatu CA używanego przez git, możesz wyeksportować łańcuch certyfikatów hosta do pliku i zmusić go do użycia:
Jeśli to nie zadziała, możesz wyłączyć weryfikację ssl tylko dla hosta:
Uwaga: Poddany możliwemu atakowi typu man in the middle, gdy weryfikacja ssl jest wyłączona.
źródło
--global
opcja nie jest konieczna: jeśli pominiesz--global
, ustawienie dotyczy tylko tego konkretnego repozytorium git.Właśnie miałem ten sam problem, ale korzystałem z sourcetree w systemie Windows. Te same kroki dla normalnego GIT również w systemie Windows. Po wykonaniu poniższych kroków udało mi się rozwiązać ten problem.
To powinno rozwiązać problem z samopodpisanymi certyfikatami i korzystaniem z GIT.
Próbowałem użyć konfiguracji „http.sslcapath”, ale to nie działało. Również jeśli nie dołączę całego łańcucha do pliku certyfikatów, to również się nie powiedzie. Jeśli ktoś ma wskaźniki na nich, daj mi znać, ponieważ powyższe należy powtórzyć dla nowej instalacji.
Jeśli jest to GIT systemowy, możesz użyć opcji w NARZĘDZIA -> karta GIT opcji, aby użyć GIT systemowego, co rozwiązuje problem również w sourcetree.
źródło
W przypadku repozytoriów github (lub jakichkolwiek certyfikatów niepodpisanych przez siebie) wybranie poniżej podczas instalacji Git-on-windows rozwiązało problem.
źródło
Miałem już ten problem i rozwiązałem go za pomocą następującej konfiguracji.
[http "https://your.domain"] sslCAInfo=/path/to/your/domain/priviate-certificate
Od wersji git 2.3.1 możesz wstawić
https://your.domain
po http, aby wskazać, że następujący certyfikat jest tylko dla niego.źródło
git config --global http.sslCAInfo <your-server-self-signed-cert.pem>
wcześniej ( dlatego powoduje błąd „nie można uzyskać lokalnego certyfikatu wystawcy”)C:\Program Files\Git\bin
iC:\Program Files\Git\mingw64\bin
Następnie spróbuj czegoś takiego:
git clone https://github.com/heroku/node-js-getting-started.git
źródło
Jedną rzeczą, która mnie zawiodła, był format ścieżki (na moim komputerze z systemem Windows). Pierwotnie miałem to:
Nie udało się to jednak z powodu błędu „nie można uzyskać certyfikatu lokalnego wystawcy”.
W końcu zadziałało to:
źródło
W moim przypadku, ponieważ zainstalowałem terminal ConEmu dla Windows 7, tworzy on
ca-bundle
podczas instalacji oC:\Program Files\Git\mingw64\ssl\certs
.Dlatego muszę uruchomić następujące polecenia na terminalu, aby działało:
Dlatego mój
C:\Program Files\Git\etc\gitconfig
zawiera następujące:Wybrałem również tę samą opcję, o której wspomniano tutaj podczas instalowania Gita.
Mam nadzieję, że to pomaga!
źródło
Aby naprawić błąd szczególny Problem z certyfikatem SSL: nie można uzyskać lokalnego certyfikatu wystawcy w git
Miałem ten sam problem z certyfikatami Let's Encrypt.
Witryna z https potrzebujemy tylko:
ale git pull mówi:
Aby to naprawić, musimy również dodać:
źródło
Użyj tego polecenia wcześniej, aby uruchomić aktualizację / instalację kompozytora:
źródło