Github: błąd podczas klonowania mojego prywatnego repozytorium


155

Próbuję sklonować mój projekt GitHub przy użyciu adresu URL https, ale kończy się to niepowodzeniem z powodu błędu:

$ git clone https://foo@github.com/foo/foo-private.git
Cloning into foo-private...
Password:
error: error setting certificate verify locations:
  CAfile: /bin/curl-ca-bundle.crt
  CApath: none
 while accessing https://foo@github.com/foo/foo-private.git/info/refs

fatal: HTTP request failed

Co ja robię źle?

Odpowiedzi:


289

Widziałem to w systemie Windows, z msysgit 1.7.2.3. Musisz naprawić ścieżkę do bin / curl-ca-bundle.crt . Musiałem określić ścieżkę bezwzględną, używając odwrotnych ukośników:

git config --system http.sslcainfo "C: \ Program Files (x86) \ git \ bin \ curl-ca-bundle.crt"

lub - niezbyt zalecane - możesz całkowicie wyłączyć sprawdzanie SSL, wykonując:

git config --system http.sslverify false

W obu przypadkach spowoduje to zmiany w pliku [git-install-dir] / etc / gitconfig, który również można edytować bezpośrednio.

(Oryginalne rozwiązania znalezione na http://github.com/blog/642-smart-http-support )


1
W moim przypadku musiałem użyć separatora katalogów dla Windows, to znaczy, muszę użyć "\" (windows) zamiast "/" (unix) do oddzielenia katalogów w ścieżce.
Victor

Ponieważ napisanie oryginalnego posta poniżej działa dla mnie Wypróbuj w publicznym repozytorium: $ git clone github.com/schacon/grack.git W przypadku prywatnych repozytoriów lub aby mieć dostęp push do repozytorium, możesz sklonować w ten sposób: $ git clone username@github.com/username/project.git Dzięki :)
J4cK

13
Wydaje się, że dla przyszłych odniesień ścieżka zmieniła się na „C: \ Program Files (x86) \ Git \ mingw32 \ ssl \ certs \ ca-bundle.crt”
Ben

3
Ścieżka na moim komputerze 64-bitowym to „C: \ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt”
Kamaraju Kusumanchi

3
Na mojej 64-bitowej maszynie git config --global http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"działało, nie mogę powiedzieć, dlaczego globalny, podczas gdy system zawiódł.
semako

76

Rozwiązałem problem z instalacją Gita z: https://git-for-windows.github.io/ Zlokalizuj ścieżkę do pliku certyfikatu:

D: \ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt

Skonfiguruj ścieżkę Git:

git config --system http.sslcainfo "D: \ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt"

Spróbuj ponownie


13
Mam error: could not lock config file C:\Program Files\Git\mingw64/etc/gitconfig: Permission denied. Uruchomiłem "C:\Program Files\Git\git-bash.exe"jako administrator i spróbowałem ponownie i zadziałało. Dzięki!
AXO

Better Explaination
Kasim Rangwala

2
Właśnie zainstalowałem Git dla Windows 2.13.2 i napotkałem ten problem, próbując wysłać do pilota. Okazało się, że plik certyfikatu znajduje się w podobnej lokalizacji:C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt
Simon Tewsi

1
to zadziałało dla mnie, zainstalowałem Git tylko za pomocą udostępnionego linku i to rozwiązało to dla mnie, dzięki
Sunny Okoro Awa

Zainstalowałem GIT w określonym katalogu podczas instalacji, dlatego musiałem określić poprawną ścieżkę MINGW64 zgodnie z tą instalacją
gargkshitiz

21

Jeśli używasz MSYS2 ...

Po prostu zainstaluj pakiety certyfikatów za pomocą następujących poleceń:

32 bity

pacman -S mingw-w64-i686-ca-certificates ca-certificates

64 bity

pacman -S mingw-w64-x86_64-ca-certificates ca-certificates

1
Plus jeden. Dzięki. Nie przypominam sobie, że musiałem to robić 32bit msys2, ale okoliczności mogą się różnić.
bvj

1
Dziękuję, potwierdzam, że jest to rzecz, którą należy zrobić, używając bitów msys2 64 :-D
FabienRohrer

1
Może się zdarzyć, że plik /usr/ssl/certs/ca-bundle.crt jest pusty, po prostu ponownie zainstaluj ponownie certyfikaty ca
Daniel YC Lin

Nie dla systemu Windows: $ pacman -S mingw-w64-x86_64-ca-Certificates bash: pacman: command not found
belgoros

@Javix Dlatego jest napisane „Jeśli używasz MSYS2”. Polecenie pacman nie jest domyślnie dostępne w systemie Windows, ale jest dostępne, jeśli masz zainstalowany pakiet MSYS2.
CoolOppo

12

Jeśli używasz Cygwin, możesz zainstalować pakiet ca-Certificates z apt-cyg :

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /usr/local/bin
apt-cyg install ca-certificates

Jak zainstalować pakiet cygwin z wiersza poleceń?


1
Cholera. Szukałem tak długo. Udało się to również na mac. Dziękuję za udostępnienie.
Phlow

1
Na Cygwin zadziałało to dla mniegit config --system http.sslcainfo /usr/ssl/certs/ca-bundle.crt
ATorras

9
git config --global http.sslverify "false" 

Rozwiąże problem. Następnie pojawi się wyskakujące okienko, w którym należy wprowadzić nazwę użytkownika i hasło


5
Warto wspomnieć o konsekwencjach tego dla bezpieczeństwa. Wydaje się to okropnym pomysłem, szczególnie w skali globalnej.
C. Helling,

Pracowałem dla mnie nad HPC
mmann1123

6

ROZWIĄZANE: Otrzymałem ten błąd po zainstalowaniu aktualizacji instalatora systemu Git dla systemu Windows. Tak się stało, że nie zainstalowałem go z uprawnieniami administratora, więc Git został zainstalowany w „C: \ Users \ my_name \ AppData \ Local \ Programs” zamiast „C: \ program Files”. ponowna instalacja Gita, ponieważ administrator pozwolił umieścić go w C: \ Program Files i wszystko poszło dobrze!


Co jest warte, odinstalowanie i ponowne zainstalowanie GitHub Desktop również to naprawiło, mimo że nadal korzystałem z folderu AppData.
Ben Collier

5

To zadziałało dla mnie (używam Linuksa Manjaro). Uruchamiam cmd, aby wyświetlić certyfikaty ca:

$ curl-config --ca
**/etc/ssl/certs/ca-certificates.crt**

Ale tak naprawdę znalazłem certyfikaty na ścieżce:

**/etc/ca-certificates/extracted/ca-bundle.trust.crt**

Następnie dodaj konfigurację do ~ / .gitconfig (jeśli nie istnieje, utwórz ją):

**vim ~/.gitconfig**
[http]
    sslVerify = true
    sslCAinfo = /etc/ca-certificates/extracted/ca-bundle.trust.crt

[user]
    email = <email of github account>
    name = <username of github account>

To działa!

.rbenv]$ git pull

remote: Counting objects: 70, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 70 (delta 39), reused 12 (delta 12), pack-reused 6
Unpacking objects: 100% (70/70), done.
From https://github.com/sstephenson/rbenv
   c43928a..efb187f  master     -> origin/master
 + 37ec781...7e57b52 user-gems  -> origin/user-gems  (forced update)
Updating c43928a..efb187f
Fast-forward
 libexec/rbenv-init         |  4 ++--
 libexec/rbenv-version-file |  1 +
 test/init.bats             |  2 +-
 test/test_helper.bash      | 25 +++++++++++++++----------
 4 files changed, 19 insertions(+), 13 deletions(-)

1
Pracował dla mnie na archlinux!
lucasem

4

git config --system http.sslcainfo /bin/curl-ca-bundle.crt

To działa. Nie musisz podawać pełnej ścieżki.


3

Zmierzyłem się z tym podczas git pull. Dla mnie edytowałem globalny plik konfiguracyjny git, który naprawił problem.

Przejdź do folderu domowego i otwórz plik .gitconfig. Zwykle C: \ Users \ .gitconfig

Jeśli pliku nie ma, utwórz go

[http]
sslcainfo = E: \ systools \ git-1.8.5.2 \ bin \ curl-ca-bundle.crt

Tam musisz podać własną ścieżkę instalacji gita. Użyłem tutaj przenośnej wersji gita.

Następnie git clone / pull to zadziała.


1
Musisz użyć podwójnych znaków ucieczki:E:\\systools...
HappyCactus

ALE pamiętaj, aby NIE zawijać ścieżki w cudzysłów. super intuicyjny. "C:\\folder\\file"jest zły, C:\\folder\\filejest dobry. Chcę odzyskać godzinę.
amazingdibelly

2

Jeśli używasz powłoki poleceń Git, która instaluje się z aplikacją GitHub dla systemu Windows, ten i różne inne problemy mogą się pojawić po aktualizacji. Po prostu uruchom aplikację Git Hub dla systemu Windows i zamknij ją ponownie. Powłoka znów będzie działać poprawnie. Problem polega na tym, że aktualizacja nie kończy się, dopóki aplikacja Windows nie zostanie uruchomiona. Samo użycie powłoki na niej nie powoduje zakończenia aktualizacji.


2

Widziałem to na moim Githubie dla Windows.

Zalecam odinstalowanie Githuba dla Windows i ponowne zainstalowanie.

Wcześniej próbowałem kilku sposobów bez powodzenia, ale to rozwiązanie zadziałało!


1

W systemie Windows używającym msysgit wystąpił ten błąd, a przyczyną było dodanie naszych korporacyjnych certyfikatów proxy.

Jeśli edytujesz swój plik curl-ca-bundle.crt, musisz upewnić się co do jego zakończenia. W przypadku pakietu curl-ca-bundle musisz użyć końcówek liniowych w stylu Linuksa.

> git ls-remote --tags --heads https://github.com/oblador/angular-scroll.git
fatal: unable to access 'https://github.com/oblador/angular-scroll.git/': error setting certificate verify locations:
  CAfile: C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt
  CApath: none

Możesz użyć Notatnika ++, aby przekonwertować zakończenia liniowe do Linuksa (wysuw linii).


1

Na marginesie, ten problem może wystąpić w systemie Windows, jeśli użytkownik, który próbuje użyć git, jest inny niż użytkownik, który go zainstalował. Błąd może wskazywać, że git nie może uzyskać dostępu do plików certyfikatów. Zainstalowanie gita jako administratora i użycie odpowiedzi @ rogertoday rozwiązało mój problem.


1

Znalazłem dobre rozwiązanie do dodawania / aktualizowania certyfikatów CA na RHEL / CentOS 6, co jest główną przyczyną zgłaszanego problemu.

Ponieważ stały się przestarzałymi dystrybucjami, tajne uprawnienia w tym systemie nie zostały zaktualizowane do czasu wykonania polecenia sudo yum update.

Nie zdawałem sobie sprawy z tego problemu, dopóki tryb GIT_CURL_VERBOSE nie pokazuje problemu z ukrytą ścieżką.


0

W systemie Linux miałem ten błąd i naprawiłem go, uruchamiając sudo update-ca-certificates.


Powinieneś wyjaśnić, co robi to polecenie i dlaczego to pomaga. Publikowanie surowych poleceń bez wyjaśnienia nie jest dobrym pomysłem, szczególnie jeśli potrzebujesz uprawnień administratora.
Peanut

0

Dla mnie rozwiązało problem, gdy na moim pudełku z systemem Windows 10 próbowałem odinstalować git i ponownie zainstalować, używając domyślnie Windows Cmd, a nie Git Bash

Otwórz CMD i uruchom następujące

//Once installed try to resintall the bin folder 
git config --system http.sslcainfo \bin/curl-ca-bundle.crt

//disable ssl verification
git config --global http.sslverify "false"

//Then try to clone repo again
git clone git@github.com:account/someproject.git

0

Jeśli ktoś inny ma do czynienia z tym problemem w Git dla Windows i nie ma curl-ca-bundle.crtnigdzie w systemie nawet po ponownej instalacji, oto proces, który wykonałem:

  1. Pobierz najnowszą wersję curl tutaj: curl download mirror
  2. Wyodrębnij i przejdź do curl-**.**.*/libw wierszu poleceń
  3. Biegać ./mk-ca-bundle.prl
  4. Skopiuj ca-bundle.crtdo ścieżki git i zaktualizuj konfigurację zgodnie z innymi odpowiedziami

Krzyczeć za to, że pomogłeś mi w wykonaniu instalacji.


0

Rozwiązałem ten problem w systemie Windows Server 2016, instalując go ponownie i wybierając „natywną bibliotekę Windows Secure Channel” na etapie instalacji „Wybieranie zaplecza transportu HTTPS”.


0

Rozwiązanie, które działa dla mnie w systemie Windows 64-bitowym, jest następujące

git config --system http.sslverify false


0

W moim przypadku win10 mam dwie wersje z.gitconfig

  • pierwszy jest w C:\Program Files\Git\etc
  • druga jest w środku C:\Users\<user>

Komenda

git config --system http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"

rzeczywiście wprowadza zmiany C:\Program Files\Git\etc, ale git w jakiś sposób używa config wC:\Users\<user>

Więc w notatniku zmieniłem drugi .gitconfigi git w końcu przyjął odpowiednią konfigurację i zaczął działać.


-1

Udało mi się rozwiązać ten problem za pomocą następującego polecenia.

git config --system http.sslverify false


Ta odpowiedź byłaby lepsza, gdyby omawiała konsekwencje tego ustawienia dla bezpieczeństwa i podała inne sposoby rozwiązania problemu. Aczkolwiek obecna akceptowana odpowiedź robi to i więcej ...
chwarr

-1

Otrzymałem ten błąd po przeniesieniu gita na dyski twarde. Usunięcie i ponowne zainstalowanie w nowej lokalizacji naprawiło rzeczy


-1

W git dla Windows możesz również ponownie zainstalować i wybrać natywny certyfikat Windows metodę weryfikacji (domyślnie OpenSSL). Spowoduje to pominięcie weryfikacji OpenSSL i zamiast tego użycie natywnego systemu Windows, który nie wymaga utrzymywania oddzielnego narzędzia (OpenSSL) i certyfikatów.

U mnie zadziałało idealnie :)


-2

Następujące polecenie

git clone git://github.com/username/projectname.git

działał na moje potrzeby, ale zakładam, że chcesz czegoś więcej niż dostępu tylko do odczytu, prawda?

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.