Certyfikat SSL został odrzucony podczas próby uzyskania dostępu do GitHub przez HTTPS za zaporą ogniową

389

Utknąłem za zaporą, więc muszę użyć HTTPS, aby uzyskać dostęp do mojego repozytorium GitHub. Używam cygwin 1.7.7 na Windows XP.

Próbowałem ustawić pilota na https://[email protected]/username/ExcelANT.git, ale wypychanie monituje o hasło, ale nic nie robi, gdy je wprowadzę. https://username:<password>github.com/username/ExcelANT.giti klonowanie pustego repozytorium od zera, ale za każdym razem daje mi ten sam błąd

błąd: problem z certyfikatem SSL, sprawdź, czy certyfikat CA jest OK. Szczegóły:
błąd: 14090086: Procedury SSL: SSL3_GET_SERVER_CERTIFICATE: weryfikacja certyfikatu nie powiodła się podczas uzyskiwania dostępu do https://github.com/username/ExcelANT.git/info/refs

Włączenie GIT_CURL_VERBOSE=1daje mi

* Informacje o podłączeniu () do portu github.com 443 (# 0)
* Próbowanie 207.97.227.239 ... * Pomyślnie ustawiono lokalizacje weryfikacji certyfikatów:
* Plik CA: brak
CApath: / usr / ssl / certs
* Problem z certyfikatem SSL, sprawdź, czy certyfikat CA jest OK. Szczegóły:
błąd: 14090086: Procedury SSL: SSL3_GET_SERVER_CERTIFICATE: weryfikacja certyfikatu nie powiodła się
* Wygasła wyczyszczona
* Zamykanie połączenia # 0
* Informacje o połączeniu () z portem github.com 443 (# 0)
* Próbowanie 207.97.227.239 ... * Pomyślnie ustaw certyfikat sprawdź lokalizacje:
* CAfile: brak
CApath: / usr / ssl / certs
* Problem z certyfikatem SSL, sprawdź, czy certyfikat CA jest OK. Detale:
błąd: 14090086: Procedury SSL: SSL3_GET_SERVER_CERTIFICATE: weryfikacja certyfikatu nie powiodła się
* Wygasła wyczyszczona
*
Błąd zamknięcia połączenia nr 0 : problem z certyfikatem SSL, sprawdź, czy certyfikat CA jest OK. Szczegóły:
błąd: 14090086: Procedury SSL: SSL3_GET_SERVER_CERTIFICATE: weryfikacja certyfikatu nie powiodła się podczas uzyskiwania dostępu do https://github.com/username/ExcelANT.git/info/refs

fatal: HTTP request failed

Czy to problem z moją zaporą ogniową, cygwinem czy co?

Nie ustawiłem proxy HTTP w konfiguracji Git, jednak jest to serwer ISA, który wymaga uwierzytelnienia NTLM, a nie podstawowego, więc jeśli nikt nie wie, jak zmusić gita do korzystania z NTLM, jestem zdumiony.

oharab
źródło
Jeśli ustawię wartość http.sslVerify false, połączenie będzie bezpieczne? i to jest dobra ścieżka do użycia? W międzyczasie używamy firewalla pfsense. w tej chwili plik .gitconfig w profilu użytkownika jest pusty.
Nullpointer,

Odpowiedzi:

57

Jeśli chcesz rozwiązać problem z certyfikatami, pomiń tę odpowiedź. Ta odpowiedź dotyczy tunelowania ssh przez zaporę ogniową, która jest lepszym rozwiązaniem IMHO do obsługi zapory ogniowej / serwera proxy.

Jest lepszy sposób niż korzystanie z dostępu HTTP, a mianowicie skorzystanie z usługi ssh oferowanej przez github na porcie 443 serwera ssh.github.com.

Używamy narzędzia zwanego korkociągiem. Jest to dostępne zarówno dla CygWin (poprzez konfigurację ze strony domowej cygwin), jak i Linuksa przy użyciu twojego ulubionego narzędzia do pakowania. W systemie MacOSX jest on dostępny w Macports i co najmniej warzeniu.

Wiersz polecenia wygląda następująco:

$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>

Serwer proxy i port proxy są współrzędnymi serwera proxy https. Targhost i targetport to lokalizacja hosta do tunelu. Authfile to plik tekstowy z 1 wierszem zawierający nazwę użytkownika / hasło do serwera proxy oddzielone dwukropkiem

na przykład:

abc:very_secret

Instalacja do używania „normalnego” protokołu ssh do komunikacji git

Dodając to do ~/.ssh/configtej sztuczki, można jej użyć do normalnych połączeń ssh.

Host github.com
  HostName ssh.github.com
  Port 443
  User git
  ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth

teraz możesz przetestować, czy działa ssh-sing do gitproxy

pti@pti-laptop:~$ ssh github.com
PTY allocation request failed on channel 0
Hi ptillemans! You've successfully authenticated, but GitHub does not provide shell access.
       Connection to github.com closed.
pti@pti-laptop:~$

(Uwaga: jeśli nigdy wcześniej nie logowałeś się do github, ssh poprosi o dodanie klucza serwera do znanego pliku hosts. Jeśli jesteś paranoikiem, zaleca się zweryfikowanie odcisku palca RSA do tego pokazanego na stronie github, na której przesłałeś swój klucz).

Niewielki wariant tej metody ma miejsce, gdy trzeba uzyskać dostęp do repozytorium za pomocą innego klucza, np. W celu oddzielenia konta prywatnego od konta profesjonalnego.

# 
# account dedicated for the ACME private github account 
#
Host acme.github.com
  User git
  HostName ssh.github.com
  Port 443
  ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
  IdentityFile ~/.ssh/id_dsa_acme

cieszyć się!

Używamy tego od lat zarówno w systemie Linux, Mac, jak i Windows.

Jeśli chcesz, możesz przeczytać więcej na ten temat w tym poście na blogu

Peter Tillemans
źródło
Zrezygnowałem z pracy, ale rzuciłem na to okiem i sprawiłem, że działała. zmiana .ssh / config na> Host ssh.github.com >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa i klonowanie za pomocą git clone [email protected]:oharab/log4vba.gitsprawiło, że uruchomiło się ono w mgnieniu oka .
oharab
1
Głosuję tylko w dół, ponieważ poniższa odpowiedź jest bardziej pomocna, ale niestety przepełnienie stosu zawsze umieszcza zaakceptowaną odpowiedź na pierwszym miejscu, nawet jeśli była to odpowiedź tylko na jedną okoliczność.
mjaggard,
1
W każdym razie zaktualizowałem odpowiedź, ponieważ uważam, że tunelowanie SSL przez proxy HTTPS jest nadal lepszym rozwiązaniem niż fałszowanie certyfikatów HTTPS lub wyłączanie ich i kończenie na rozwiązaniu, które jest nadal mniej wydajne, przyjazne dla użytkownika ORAZ mniej bezpieczne. Cóż, wiele pozytywnych opinii dowodzi, że się mylę, ale i tak trzymam się mojej opinii w tej sprawie.
Peter Tillemans,
523

Problem polega na tym, że nie masz żadnych certyfikatów urzędu certyfikacji zainstalowanych w systemie. A tych certyfikatów nie można zainstalować za pomocą pliku setup.exe cygwin.

Aktualizacja: Zainstaluj pakiet Net / ca-certyfikaty w cygwin (dzięki dirkjot)

Istnieją dwa rozwiązania:

  1. Właściwie zainstaluj certyfikaty główne. Zwijają się faceci wyodrębnili dla ciebie certyfikaty z Mozilli .

    cacert.pemplik jest tym, czego szukasz. Ten plik zawiera> 250 certyfikatów CA (nie wiem jak ufać tej liczbie ppl). Musisz pobrać ten plik, podzielić go na poszczególne certyfikaty, umieścić je w katalogu / usr / ssl / certs (twoja ścieżka CA) i zindeksować je.

    Oto jak to zrobić. Z cygwin setup.exe zainstaluj curl i pakiety openssl wykonaj:

    $ cd /usr/ssl/certs
    $ curl http://curl.haxx.se/ca/cacert.pem |
      awk '{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'
    $ c_rehash

    Ważne : Aby z niego korzystać c_rehash, musisz również zainstalować openssl-perl.

  2. Zignoruj ​​weryfikację certyfikatu SSL.

    OSTRZEŻENIE: Wyłączenie weryfikacji certyfikatu SSL ma wpływ na bezpieczeństwo. Bez weryfikacji autentyczności połączeń SSL / HTTPS złośliwy atakujący może podszyć się pod zaufany punkt końcowy (taki jak GitHub lub inny zdalny host Git), a Ty będziesz narażony na atak typu Man-in-the-Middle . Upewnij się, że w pełni rozumiesz problemy bezpieczeństwa i model zagrożenia, zanim użyjesz tego jako rozwiązania.

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    
Alexey Vishentsev
źródło
9
Nie musisz instalować curl, po prostu użyj wget:wget -O - http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_a fter=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
Deebster
38
Wiem, że to jest cygwin, ale na wypadek, gdyby ktoś się tu dostał za pomocą Centos, to / etc / pki / tls / certs, gdzie powinien iść .pem.
Przestań oczerniać Monikę Cellio
2
Nie działało to dla mnie - nie mam jednak c_rehash na mojej ścieżce. Próbowałem zrestartować moją powłokę. Miałem też mkdir -p / usr / ssl / certs. Zastanawiam się, czy moja instalacja Cygwin jest inna, czy czegoś brakuje? Ponadto ustawienie GIT_SSL_NO_VERIFY = true, a następnie uruchomienie operacji klonowania spowodowało błąd: fatal: https://code.google.com/.../info/refs not found: did you run git update-server-info on the server?Może zadziała po ponownym uruchomieniu?
Jeff Axelrod
7
Ta odpowiedź jest zła. Wystarczy zainstalować ca-certificatespakiet cygwin , aby uzyskać brakujące certyfikaty root. Dlaczego ta odpowiedź ma tak wiele zalet?
rurban
32
Nie wyłączaj weryfikacji certyfikatu SSL. Zbyt często zdarza się to w narzędziach i kodzie aplikacji w całej branży. Otwiera cię na człowieka w środkowym ataku. Jeśli zamierzasz używać protokołu SSL, użyj go poprawnie.
Tim
430

Uwaga: wyłączenie weryfikacji SSL ma wpływ na bezpieczeństwo . Pozwala na ataki Man in the Middle, gdy używasz Git do przesyłania danych przez sieć. Upewnij się, że w pełni rozumiesz wpływ na bezpieczeństwo, zanim użyjesz tego jako rozwiązania. Lub jeszcze lepiej, zainstaluj certyfikaty główne.

Jednym ze sposobów jest wyłączenie weryfikacji SSL CERT:

git config --global http.sslVerify false

Zapobiegnie to sprawdzeniu przez CURL certyfikatu HTTPS.

Tylko dla jednego repozytorium:

git config http.sslVerify false
Yi Zhao
źródło
17
Jeśli nie chcesz edytować swoich ustawień globalnych (np. Wszystkich repozytoriów), wyklucz --global
Erin
57
czy mógłbyś dodać notatkę o tym, jak bardzo jest to niebezpieczne?
Chronial 16.04.13
26
to okropny pomysł. istnieje powód, dla którego certyfikaty powinny zostać zweryfikowane. jeśli nie zweryfikujesz certyfikatu jako zaufanego, certyfikat może zostać wygenerowany przez kogokolwiek i możesz być podatny na atak człowieka w środku.
Mark Carey,
24
Nie wyłączaj weryfikacji SSL!
Tim
14
Dla wszystkich ludzi „nie rób tego”: Jasne, że to wcale nie jest najbezpieczniejsze podejście. ALE, jest to zdecydowanie lepsza opcja niż brak SSL! Ponieważ niektórzy ludzie używają tylko swoich prywatnych prostych serwerów git, jest to dla nich w porządku. Jasne, dla prawdziwego bezpieczeństwa nie jest to ustawienie GO. Najbardziej niepewną rzeczą jest przesyłanie zwykłych bajtów przez sieć.
Peter Stegnar
109

Chciałem, aby Git używał zaktualizowanego pakietu certyfikatów bez zastępowania tego, z którego korzysta cały mój system. Oto, jak Git może użyć określonego pliku w moim katalogu domowym:

mkdir ~/certs
curl http://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem

Teraz zaktualizuj, .gitconfigaby użyć tego do weryfikacji wzajemnej:

[http]
sslCAinfo = /home/radium/certs/cacert.pem

Uwaga: Używam ścieżki bezwzględnej. Git nie rozwija tutaj ścieżki, więc nie możesz używać ~bez brzydkiej kludge. Alternatywnie możesz pominąć plik konfiguracyjny i GIT_SSL_CAINFOzamiast tego ustawić ścieżkę za pomocą zmiennej środowiskowej .

Aby rozwiązać ten problem, ustaw GIT_CURL_VERBOSE=1. Ścieżka pliku CA, którego używa Git, zostanie pokazana w wierszach rozpoczynających się od „CAfile:” w danych wyjściowych.

kenchilada
źródło
12
Dla mnie to najlepsza odpowiedź: działa na Uniksie (właściwie NetBSD), wpływa tylko na git, a nie na nic innego w systemie i nie wymaga dostępu do roota / administratora. Dzięki!
Eric,
1
Idealnie, można nawet lepiej. Zastąpiłem mój stary /etc/ssl/certs/ca-certificates.crtna moim Ubuntu 8.04 LTS tym plikiem i zadziałało to magicznie!
Michael-O
1
@ Eric, dziękuję za wspomnienie o NetBSD, ponieważ oznaczało to, że znalazłem tę odpowiedź. NetBSD jest nieco dziwny. Zainstalowałem pakiet OpenSSL, ale nawet to nie daje ci certyfikatów, tylko katalog zastępczy.
atomów
+200 Bardziej niesamowite, działało również na moim Ubuntu. Nie musisz wyłączać sprawdzania certyfikatów w git, po prostu zrób to szybką poprawkę.
Colin D Bennett
11
Doskonała odpowiedź, możesz pominąć ręczną edycję pliku ~ / .gitconfig za pomocą następującego polecenia:git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
Aron Ahmadia
41

Zauważ, że aby uruchomić tę funkcję (instalacja RVM na CentOS 5.6), musiałem uruchomić następujące czynności:

export GIT_SSL_NO_VERIFY=true

a potem standardowa procedura instalacji dla zawinięcia instalatora RVM w bash zadziałała :)

seanp2k
źródło
13
taki sam efekt jak git config --global http.sslverify false
Dyno Fu
20
To BARDZO NIEBEZPIECZNE! Celem weryfikacji certyfikatu SSL jest ochrona kodu przed modyfikacjami podczas przesyłania go przez HTTPS! Wyłączenie oznacza, że ​​złośliwi ludzie mogą wstawiać luki w zabezpieczeniach i inne nieprzyjemne rzeczy do twojego kodu, gdy go wypychasz i pobierasz!
Jeśli ustawię wartość http.sslVerify false, połączenie będzie bezpieczne? i to jest dobra ścieżka do użycia? W międzyczasie używamy firewalla
pfsense
@Ravi połączenie będzie technicznie praca, tak, ale to jest jednoznacznie nie jest dobrym pomysłem. Jeśli zarówno źródło git, jak i lokalny komputer są wewnętrzne i znajdują się pod kontrolą organizacji, może być przejezdne , ale zgodnie z komentarzem użytkownika 456814 wyłączenie weryfikacji otwiera cię na ataki MITM.
Doktor J
40

Bardzo proste rozwiązanie: zamień https: // na git: //

Użyj git: //the.repository zamiast https: //the.repository i będzie działać.

Miałem ten problem z Windows z TortoiseGit i to rozwiązało.

klodoma
źródło
Myślę, że to działa, ponieważ nie weryfikuje ssl dla git://. Jak stwierdzono w powyższej odpowiedzi , wyłączenie weryfikacji ssl stanowi zagrożenie bezpieczeństwa.
danijar
5
@danijar powodem tego jest to, że w ogóle nie używa SSL . git://Protokół używa SSH, który korzysta ssh publicznego i prywatnego pary klucz do uwierzytelniania i szyfrowania, zamiast certyfikatu SSL.
11
@Cupcake git://ma nie korzystać z SSH. Zobacz protokół SSH i protokół Git .
nyuszika7h
@ nyuszika7h oh, masz rację. Wciąż coraz git://mylić z [email protected]:user/project.git, który jest składnia SCP-owski .
31

Jako najbardziej popularna odpowiedź (autor Aleksiej Vishentsev) ma:

Problem polega na tym, że nie masz żadnych certyfikatów urzędu certyfikacji zainstalowanych w systemie. A tych certyfikatów nie można zainstalować za pomocą pliku setup.exe cygwin.

Jednak to ostatnie twierdzenie jest fałszywe (teraz albo zawsze było, nie wiem).

Wszystko, co musisz zrobić, to przejść do konfiguracji cygwin i dołączyć pakiet „ca-certyfikaty” (jest pod Net). To załatwiło sprawę.

dirkjot
źródło
1
pokazuje błąd git cygwin CAfile: /etc/ssl/ca-bundle.crtpodczas instalowania pakietu cagwin ca-certyfikaty /usr/ssl/certs/ca-bundle.crt. Dlatego musiał edytować, ~/.gitconfigaby określić lokalizację: [http]następniesslCAinfo = /usr/ssl/certs/ca-bundle.crt
maxpolk
@maxpolk: Zrobiłbym link, ale efekt jest taki sam. To oczywisty błąd w cygwin git, czy zastanawiałeś się nad podniesieniem biletu? sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
dirkjot
Na dzień dzisiejszy 2013-5-23, cygwin git działa dobrze na https: jeśli zdarzyło Ci się również / pamiętasz, aby zainstalować cygwin's ca-certificates.
bobbogo
Przyjechałem tutaj z tego pytania , które wskazywało, że odpowiedź można znaleźć tutaj. Jednak ani powiązana odpowiedź, ani ta odpowiedź nie działa dla mnie; TortoiseSVN wciąż wyświetla dane wyjścioweerror: SSL certificate problem, verify that the CA cert is OK.
LUB Mapper
Gdzie dokładnie instalujemy pliki instalacyjne cygwin z menedżera pakietów? Czy certyfikaty ca muszą znajdować się w folderze bin Git?
221b
16

Znam oryginalne listy pytań Cygwin, ale oto rozwiązanie dla CentOS:

curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

Źródło: http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/

Herman J. Radtke III
źródło
To zadziałało dla mnie świetnie; powinieneś jednak najpierw wykonać kopię zapasową oryginału, jak sugeruje PO. Wygląda na to, że dzieje się tak, gdy Github odnawia swój certyfikat, jeśli korzystasz z systemu, który ma starszy.
Evan Donovan,
Na CentOS 5 naprawiłem to yum update openssl, co również aktualizuje pakiet ca.
raarts
jeśli zamierzasz skorzystać z tej opcji, powinieneś zweryfikować skrót SHA-256 pliku przed użyciem. Możesz uzyskać sumę sha256sum dla bieżącego pliku w inny sposób niż konfigurowany loki (jak przeglądarka na innym komputerze, który jest już skonfigurowany bezpiecznie), a następnie porównać go z wynikami, sha256sum /etc/pki/tls/certs/ca-bundle.crtaby upewnić się, że masz właściwy wynik plik.
kbolino
16

Aby sklonować w systemie Windows przy ustawieniu SSL weryfikuj na false:

    git -c http.sslVerify=false clone http://example.com/e.git

Jeśli chcesz sklonować bez zmiany ustawień globalnych.

FlavorScape
źródło
14

W CentOS 5.x prosta yum update opensslaktualizacja pakietu openssl, który zaktualizował systemca-bundle.crt plik i naprawił dla mnie problem.

To samo może dotyczyć innych dystrybucji.

Wayne Walker
źródło
mniam! To działało dla mnie dla starej instalacji (4.1.2) Linuksa Red Hat. Dzięki!
Josh
13

Jeśli wszystko, co chcesz zrobić, to po prostu użyć klienta git Cygwin z github.com, istnieje znacznie prostszy sposób bez konieczności przechodzenia przez pobieranie, rozpakowywanie, konwertowanie, dzielenie plików cert. Postępuj w następujący sposób (zakładam, że Windows XP z Cygwin i Firefox)

  1. W przeglądarce Firefox przejdź do strony github (dowolna)
  2. kliknij ikonę github na pasku adresu, aby wyświetlić certyfikat
  3. Kliknij „więcej informacji” -> „wyświetl certyfikat” -> „szczegóły” i wybierz każdy węzeł w hierarchii, zaczynając od najwyższego; dla każdego z nich kliknij „Eksportuj” i wybierz format PEM:
    • GTECyberTrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. Zapisz powyższe pliki gdzieś na dysku lokalnym, zmień rozszerzenie na .pem i przenieś je do / usr / ssl / certs w instalacji Cygwin (Windows: c: \ cygwin \ ssl \ certs)
  5. (opcjonalnie) Uruchom c_reshash z bash.

Otóż ​​to.

Oczywiście instaluje to tylko jedną hierarchię certyfikatów, potrzebną dla github. Możesz oczywiście użyć tej metody z dowolną inną witryną bez konieczności instalowania 200 certyfikatów witryn, którym (niekoniecznie) ufasz.

esquifit
źródło
8

Jeśli korzystasz z systemu Mac OS X, możesz zainstalować pakiet ca-cert za pośrednictwem homebrew:

$ brew install curl-ca-bundle
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

Formuła instaluje cert pakiet do swojego udziału poprzez:

share.install 'ca-bundle.crt'

shareSposób jest tylko alias /usr/local/sharei zwijanie-CA-pakiet dostarcza Mozilla. To, co widzisz, odnosi się do wielu problemów. Mam nadzieję, że to pomaga, ponieważ nie jest to bardzo proste, jak podejść do tego w Mac OS X. brew install curlnie przyniesie ci wiele, ponieważ jest to tylko beczka i nie zostanie połączona (uruchamianie which curlzawsze będzie generować /usr/bin/curl, co jest domyślną opcją dostarczaną z twoim OS). Ten post może mieć również pewną wartość .

Oczywiście musisz wyłączyć SSL przed instalacją, homebrewponieważ jest to repozytorium git. Po prostu zrób to, co mówi curl, gdy wystąpi błąd podczas weryfikacji SSL i:

$ echo insecure >> ~/.curlrc

Po homebrewzainstalowaniu wraz z curl-ca-bundle, usuń.curlrc i spróbuj sklonować repo na github. Upewnij się, że nie ma błędów, a będziesz gotowy.

UWAGA: Jeśli skorzystasz z tej opcji .curlrc, usuń ją z systemu natychmiast po zakończeniu testowania. Ten plik może powodować poważne problemy, więc używaj go do celów tymczasowych i ostrożnie. brew doctornarzeka, jeśli zapomnisz usunąć go z systemu).

UWAGA: Jeśli zaktualizujesz swoją wersję git, będziesz musiał ponownie uruchomić to polecenie, ponieważ ustawienia systemu zostaną usunięte (są przechowywane względem pliku binarnego git w zależności od wersji).

Po uruchomieniu:

$ brew update
$ brew upgrade

Jeśli otrzymasz nową wersję git, po prostu uruchom ponownie:

$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

I wszystko będzie gotowe.

Wreszcie, jeśli masz nową wersję git, działającą:

$ git config -l --system

powinien dać ci błąd wzdłuż linii

fatal: unable to read config file '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig'

to twoja wskazówka, którą musisz powiedzieć gitowi, gdzie jest pakiet ca Mozilli.

AKTUALIZACJA:

.curlrcmoże, ale nie musi, być rozwiązaniem problemu. W każdym razie po prostu zainstaluj pakiet Ca Mozilli na swoim komputerze, niezależnie od tego, czy musisz go ręcznie pobrać, czy nie. To jest ważne tutaj. Po otrzymaniu pakietu ca możesz zacząć. Po prostu uruchom komendę git config i wskaż git na pakiet ca.

AKTUALIZACJA

Niedawno musiałem dodać:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crtdo mojego .zshenvpliku kropek, ponieważ używam zsh. git configopcja pracował dla większości przypadków, ale po uderzeniu GitHub over SSL ( rvm get stablena przykład), nadal prowadził w kwestii certyfikatów. @Maverick zwrócił na to uwagę w swoim komentarzu, ale na wypadek, gdyby ktoś spudłował lub zakładał, że niekoniecznie musi eksportować tę zmienną środowiskową oprócz uruchomienia git config --system....polecenia. Dzięki i mam nadzieję, że to pomoże.

AKTUALIZACJA

Wygląda na to, że pakiet curl-ca został niedawno usunięty z homebrew . Tutaj jest zalecenie .

Będziesz chciał upuścić niektóre pliki do:

$(brew --prefix)/etc/openssl/certs

A-Dubb
źródło
1
Możesz także spróbować wykonać następujące czynności: export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Maverick
Cześć, mam podobny problem ( stackoverflow.com/questions/20939105/... ) i ten sam problem pojawia się, gdy próbuję zainstalować Home-Brew. Co mogę zrobić w tym przypadku? Wpisanie „git config --system http.sslcainfo /usr/local/share/ca-bundle.crt” w mojej konsoli zwraca błąd: nie można zablokować pliku konfiguracyjnego /Applications/Xcode.app/Contents/Developer/usr/etc/ gitconfig: Brak takiego pliku lub katalogu ". Dziękuję za pomoc!
Mathieu,
@ Mathieu, to dość dziwne. Wygląda na to, że twój system wskazuje wersję git względem XCode. Jaka jest wydajność uruchamiania „który git” z terminala?
A-Dubb,
6

Możesz wypróbować to polecenie w terminalu :

git config --global http.ssl Zweryfikuj fałsz

reza_khalafi
źródło
5

Rozwiązałem ten problem za pomocą apt-cyg (świetnego instalatora podobnego do apt-get), aby łatwo pobrać certyfikaty ca (w tym Git i wiele innych):

apt-cyg install ca-certificates

Uwaga : najpierw należy zainstalować apt-cyg. Możesz to zrobić z wiersza poleceń systemu Windows:

cd c:\cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim

Zamknij Windows cmd i otwórz Cygwin Bash:

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
sagunms
źródło
To nie działało dla mnie - wciąż pojawia się ten sam błąd.
holdenlee
4

na pijackim pi miałem

pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git Klonowanie w 'Dropbox-Uploader' ... błąd: problem z certyfikatem SSL CA (ścieżka? prawa dostępu?) podczas uzyskiwania dostępu http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal: Żądanie HTTP nie powiodło się

więc id

sudo apt-get install ca-certificates

następnie

git clone http://github.com/andreafabrizi/Dropbox-Uploader.git  

pracował

Fred
źródło
4

Jeśli korzystałeś z systemu operacyjnego opartego na Debianie, możesz po prostu uruchomić

apt-get install ca-certyfikaty

Patrick
źródło
4

Miałem ten sam problem z Solaris Express 11. Trochę to zajęło, ale udało mi się znaleźć, gdzie należy umieścić certyfikaty. Według /etc/openssl/openssl.cnf ścieżka do certyfikatów to / etc / openssl / certs. Umieściłem wygenerowane certyfikaty, korzystając z powyższej porady od Aleksieja.

Możesz sprawdzić, czy wszystko działa, używając openssl w wierszu poleceń:

openssl s_client -connect github.com:443
Martin Smith
źródło
3

Spróbuj użyć pliku .netrc, zostanie on uwierzytelniony przez https. Utwórz wywołanie pliku .netrcw swoim katalogu domowym i umieść w nim:

machine github.com login myusername password mypass

Zobacz ten post, aby uzyskać więcej informacji:

https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj

Travis Reeder
źródło
Jest to kwestia sprawdzania poprawności certyfikatu, a nie kwestia uwierzytelnienia - niektóre systemy operacyjne (w tym ten, w którym działa OP) nie mają CA wystawiającego nowy certyfikat github na liście akcji.
Charles Duffy
3

Ulepsz rozwiązanie RouMao, tymczasowo wyłączając weryfikację GIT / curl ssl w cmd Windows:

set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443

Zaletą tego rozwiązania jest to, że działa ono tylko w bieżącym oknie cmd.

Marszałek
źródło
3
To BARDZO NIEBEZPIECZNE! Celem weryfikacji certyfikatu SSL jest ochrona kodu przed modyfikacjami podczas przesyłania go przez HTTPS! Wyłączenie oznacza, że ​​złośliwi ludzie mogą wstawiać luki w zabezpieczeniach i inne nieprzyjemne rzeczy do twojego kodu, gdy go wypychasz i pobierasz!
3

Sprawdziłeś swój czas?

Absolutnie odmówiłem uczynienia operacji git niepewnymi i po wypróbowaniu wszystkiego, co tu wspomniano, uderzyło mnie, że jedną z możliwych przyczyn nieudanej weryfikacji certyfikatów jest to, że daty są nieprawidłowe (data wygaśnięcia certyfikatu lub lokalna zegar ).

Możesz to łatwo sprawdzić, wpisując dateterminal. W moim przypadku (nowy malinowy Pi), lokalny zegar został ustawiony na 1970, więc prosty ntpdate -u 0.ubuntu.pool.ntp.orgnaprawił wszystko. W przypadku rPi polecam również umieszczenie następującego skryptu w codziennej pracy crona (powiedzmy /etc/cron.daily/ntpdate):

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1
Deiu
źródło
3

Wygeneruj token dostępu z Github i zapisz go, ponieważ nie pojawi się ponownie.

git -c http.sslVerify=false clone https://<username>:<token>@github.com/repo.git

lub,

git config --global http.sslVerify false
git clone https://github.com/repo.git
Naseer-shaik
źródło
2

Ten sam problem napotkałem podczas konfigurowania Gita na platformie do wspólnego programowania, którą muszę zarządzać.

Aby to rozwiązać:

  • Zaktualizowałem wersję Curl zainstalowaną na serwerze. Pobierz ostatnią wersję na stronie Pobierz stronę curl i postępuj zgodnie z instrukcjami instalacji. Postępowanie instalacji curl

  • Odzyskaj certyfikat organu, który dostarcza certyfikat dla serwera.

  • Dodaj ten certyfikat do pliku CAcert używanego przez curl. Na moim serwerze znajduje się w /etc/pki/tls/certs/ca-bundle.crt.

  • Skonfiguruj git, aby używał tego pliku certyfikatu, edytując plik .gitconfig i ustaw ścieżkę sslcainfo. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • Na komputerze klienckim musisz uzyskać certyfikat i skonfigurować również plik .gitconfig.

Mam nadzieję, że to pomoże niektórym z was.

G. Pfeiffer
źródło
1

Próbowałem wszystkiego, w końcu zajrzałem do pliku hosts i był tam losowy wpis dla github. Usunięcie aliasu naprawiło problem

% systemroot% \ system32 \ drivers \ etc \ hosts

GenericEventHandler
źródło
1

Po prostu wyłączyłem uwierzytelnianie certyfikatu SSL i użyłem prostego loginu do hasła użytkownika, jak pokazano poniżejwprowadź opis zdjęcia tutaj

0x3bfc
źródło
0

Potrzebowałem certyfikatów tylko dla Cygwin i git, więc zrobiłem to, co opublikował @esquifit. Jednak musiałem uruchomić krok 5 ręcznie, c_rehash nie był dostępny w moim systemie. Postępowałem zgodnie z tym przewodnikiem: Zamiast tego instalowałem certyfikaty CA w frameworku OpenSSL .

Sonata
źródło
0

Potrzebowałem dwóch rzeczy:

  1. przejdź do konfiguracji cygwin i dołącz pakiet „ ca-certyfikaty ” (jest w sieci) (jak wskazano w innym miejscu).

  2. Powiedz gitowi, gdzie znaleźć zainstalowane certyfikaty:

    GIT_SSL_CAINFO = / usr / ssl / certs / ca- bundle.crt GIT_CURL_VERBOSE = 1 git ...

    (Opcja Verbose nie jest potrzebna)

    Lub przechowywanie opcji na stałe:

    git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    git ...

użytkownik 2896631
źródło
-2

Miałem ten sam problem. Importowanie certyfikatu lub polecenie cofnięcia weryfikacji ssl nie działało. Okazało się, że wygasło hasło do sieciowego serwera proxy. Nastąpił wpis konfiguracji proxy. w pliku .gitconfig obecnym w moim profilu użytkownika Windows. Właśnie usunąłem cały wpis i znów zaczął działać.

sok roślinny
źródło
-2

W systemie Mac OSX 10.5 udało mi się to uruchomić za pomocą prostej metody. Najpierw uruchom procedury github i test, który działał dla mnie dobrze, pokazując, że mój certyfikat był w porządku. https://help.github.com/articles/generating-ssh-keys

ssh -T [email protected]

W końcu zauważyłem kolejny format adresu URL dla pilotów. Próbowałem innych powyżej i one nie działały. http://git-scm.com/book/ch2-5.html

[email protected]:MyGithubUsername/MyRepoName.git

Prosty „git push myRemoteName” działał świetnie!

AnneTheAgile
źródło
-2

Niedawno (lipiec 2014 r.) Miałem podobny problem i stwierdziłem w systemie OS X (10.9.4), że wygasł certyfikat „DigiCert High Assurance EV Root CA” (chociaż miałem również inny, który wygasł).

  1. Otwórz dostęp do pęku kluczy
  2. szukaj Certyfikaty dla „DigiCert”
  3. Wyświetl menu> Pokaż wygasłe certyfikaty

Znalazłem dwa certyfikaty o nazwie „DigiCert High Assurance EV Root CA”, jeden wygasający w listopadzie 2031 r., A wygasł w lipcu 2014 r. (Kilka dni wcześniej). Usunięcie wygasłego certyfikatu rozwiązało problem.

Mam nadzieję że to pomoże.

Craigb
źródło
-2

Dla tych, którzy używają Msys / MinGW GIT, dodaj to

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
John Chain
źródło