Das SSL-Zertifikat wurde abgelehnt, als versucht wurde, über HTTPS hinter der Firewall auf GitHub zuzugreifen

389

Ich stecke hinter einer Firewall fest und muss HTTPS verwenden, um auf mein GitHub-Repository zuzugreifen. Ich verwende Cygwin 1.7.7 unter Windows XP.

Ich habe versucht, die Fernbedienung auf https://[email protected]/username/ExcelANT.giteinzustellen, aber die Eingabeaufforderungen für ein Kennwort gedrückt, aber nichts getan, sobald ich es eingegeben habe. https://username:<password>github.com/username/ExcelANT.gitund das leere Repo von Grund auf neu zu klonen, aber jedes Mal gibt es mir den gleichen Fehler

Fehler: Problem mit dem SSL-Zertifikat. Überprüfen Sie, ob das CA-Zertifikat in Ordnung ist. Details:
Fehler: 14090086: SSL-Routinen: SSL3_GET_SERVER_CERTIFICATE: Zertifikatüberprüfung beim Zugriff auf https://github.com/username/ExcelANT.git/info/refs fehlgeschlagen

Einschalten GIT_CURL_VERBOSE=1gibt mir

* Über die Verbindung () mit github.com Port 443 (# 0)
* Versuch 207.97.227.239 ... * Zertifikatspeicherorte erfolgreich festgelegt:
* CAfile: keine
CApath: / usr / ssl / certs
* SSL-Zertifikatsproblem, überprüfen Sie dies Das CA-Zertifikat ist in Ordnung. Details:
Fehler: 14090086: SSL-Routinen: SSL3_GET_SERVER_CERTIFICATE: Zertifikatüberprüfung fehlgeschlagen
* Ablauf gelöscht
* Verbindung # 0 wird geschlossen
* Verbindung wird hergestellt () zu github.com-Port 443 (# 0)
* Versuch 207.97.227.239 ... * Zertifikat erfolgreich gesetzt Speicherorte überprüfen:
* CAfile: none
CApath: / usr / ssl / certs
* Problem mit dem SSL-Zertifikat. Überprüfen Sie, ob das CA-Zertifikat in Ordnung ist. Einzelheiten:
Fehler: 14090086: SSL-Routinen: SSL3_GET_SERVER_CERTIFICATE: Zertifikatüberprüfung fehlgeschlagen
* Ablauf gelöscht
* Verbindungsfehler 0
: Fehler beim SSL-Zertifikat. Überprüfen Sie, ob das CA-Zertifikat in Ordnung ist. Details:
Fehler: 14090086: SSL-Routinen: SSL3_GET_SERVER_CERTIFICATE: Zertifikatüberprüfung beim Zugriff auf https://github.com/username/ExcelANT.git/info/refs fehlgeschlagen

fatal: HTTP request failed

Ist das ein Problem mit meiner Firewall, Cygwin oder was?

Ich hatte den HTTP-Proxy in der Git-Konfiguration nicht festgelegt, aber es ist ein ISA-Server, der eine NTLM-Authentifizierung benötigt, nicht grundlegend. Wenn also niemand weiß, wie man Git zur Verwendung von NTLM zwingt, bin ich gescheitert.

Oharab
quelle
Wenn ich http.sslVerify auf false setze, wird die Verbindung dann gesichert? und es ist ein guter Weg zu verwenden? Dazwischen verwenden wir die pfsense Firewall. Derzeit ist die .gitconfig-Datei im Benutzerprofil leer.
Nullpointer

Antworten:

57

Sie können diese Antwort auch überspringen, wenn Sie das Zertifikatsproblem beheben möchten. Diese Antwort befasst sich mit dem Tunneln von SSH durch die Firewall, was meiner Meinung nach eine bessere Lösung für den Umgang mit Firewall- / Proxy-Dingen ist.

Es gibt einen besseren Weg als die Verwendung des http-Zugriffs, nämlich den von github an Port 443 des Servers ssh.github.com angebotenen SSH-Dienst zu verwenden.

Wir verwenden ein Werkzeug namens Korkenzieher. Dies ist sowohl für CygWin (über das Setup von der Cygwin-Homepage) als auch für Linux mit Ihrem bevorzugten Verpackungstool verfügbar. Für MacOSX ist es bei Macports erhältlich und braut zumindest.

Die Befehlszeile lautet wie folgt:

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

Der Proxyhost und der Proxyport sind die Koordinaten des https-Proxys. Der Ziel- und Zielport ist der Standort des Hosts, zu dem getunnelt werden soll. Die Auth-Datei ist eine Textdatei mit einer Zeile, die Ihren Benutzernamen / Ihr Kennwort für den Proxyserver enthält und durch einen Doppelpunkt getrennt ist

z.B:

abc:very_secret

Installation zur Verwendung des "normalen" SSH-Protokolls für die Git-Kommunikation

Durch Hinzufügen zum ~/.ssh/configTrick kann dieser Trick für normale SSH-Verbindungen verwendet werden.

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

Jetzt können Sie testen, ob es funktioniert, indem Sie an gitproxy senden

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:~$

(Hinweis: Wenn Sie sich noch nie zuvor bei github angemeldet haben, fordert ssh Sie auf, den Serverschlüssel zur bekannten Hosts-Datei hinzuzufügen. Wenn Sie paranoid sind, wird empfohlen, den RSA-Fingerabdruck auf dem auf der Github-Site angezeigten zu überprüfen Ihren Schlüssel hochgeladen).

Eine geringfügige Variante dieser Methode ist der Fall, wenn Sie mit einem anderen Schlüssel auf ein Repository zugreifen müssen, z. B. um Ihr privates Konto von Ihrem professionellen Konto zu trennen.

# 
# 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

genießen!

Wir verwenden dies seit Jahren sowohl unter Linux als auch unter Macs und Windows.

Wenn Sie möchten, können Sie mehr darüber in diesem Blog-Beitrag lesen

Peter Tillemans
quelle
Ich habe es aufgegeben, das zum Laufen zu bringen, habe es mir aber noch einmal angesehen und es zum Laufen gebracht. Durch Ändern von .ssh / config in> Host ssh.github.com >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa und Klonen mit git clone [email protected]:oharab/log4vba.gitwurde es in kürzester Zeit betriebsbereit .
Oharab
1
Ich stimme nur ab, weil die Antwort unten hilfreicher ist, aber leider stellt der Stapelüberlauf die akzeptierte Antwort immer an die Spitze, selbst wenn es sich nur um eine Antwort für einen einzelnen Umstand handelt.
mjaggard
1
Auf jeden Fall habe ich die Antwort aktualisiert, da ich finde, dass das SSL-Tunneln über den https-Proxy immer noch eine bessere Lösung ist, als mit HTTPS-Zertifikaten herumzuspielen oder sie zu deaktivieren und eine Lösung zu finden, die immer noch weniger leistungsfähig, benutzerfreundlich und weniger sicher ist. Nun, viele positive Stimmen beweisen, dass ich falsch liege, aber ich halte mich trotzdem an meine Meinung in dieser Angelegenheit.
Peter Tillemans
523

Das Problem ist, dass auf Ihrem System keine Zertifizierungsstellenzertifikate installiert sind. Und diese Zertifikate können nicht mit der setup.exe von cygwin installiert werden.

Update: Installieren Sie das Net / ca-certificates-Paket in cygwin (danke dirkjot)

Es gibt zwei Lösungen:

  1. Installieren Sie tatsächlich Stammzertifikate. Curl Jungs für Sie Zertifikate von Mozilla extrahiert .

    cacert.pemDatei ist das, wonach Sie suchen. Diese Datei enthält> 250 CA-Zertifikate (ich weiß nicht, wie ich dieser Anzahl von Personen vertrauen soll). Sie müssen diese Datei herunterladen, in einzelne Zertifikate aufteilen, sie in / usr / ssl / certs (Ihren CApath) ablegen und sie indizieren.

    Hier erfahren Sie, wie es geht. Mit cygwin setup.exe installieren Sie curl und openssl Pakete führen Sie Folgendes aus:

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

    Wichtig : Um verwenden zu können, müssen c_rehashSie auch installieren openssl-perl.

  2. Ignorieren Sie die Überprüfung des SSL-Zertifikats.

    WARNUNG: Das Deaktivieren der Überprüfung von SSL-Zertifikaten hat Auswirkungen auf die Sicherheit. Ohne Überprüfung der Authentizität von SSL / HTTPS-Verbindungen kann sich ein böswilliger Angreifer als vertrauenswürdiger Endpunkt (z. B. GitHub oder ein anderer Remote-Git-Host) ausgeben, und Sie sind anfällig für einen Man-in-the-Middle-Angriff . Stellen Sie sicher, dass Sie die Sicherheitsprobleme und Ihr Bedrohungsmodell vollständig verstanden haben, bevor Sie dies als Lösung verwenden.

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    
Alexey Vishentsev
quelle
9
Sie müssen Curl nicht installieren, verwenden Sie einfach 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
Ich weiß, dass dies Cygwin ist, aber falls jemand mit Centos hierher kommt, ist es / etc / pki / tls / certs, wohin die .pems gehen sollen.
Hören Sie auf, Monica Cellio
2
Hat bei mir nicht funktioniert - ich habe jedoch kein c_rehash auf meinem Weg. Ich habe versucht, meine Shell neu zu starten. Ich musste auch mkdir -p / usr / ssl / certs. Ich frage mich, ob meine Cygwin-Installation anders ist oder etwas fehlt. Das Setzen von GIT_SSL_NO_VERIFY = true und das anschließende Ausführen des Klonvorgangs führten zu folgendem Fehler: fatal: https://code.google.com/.../info/refs not found: did you run git update-server-info on the server?Möglicherweise funktioniert es nach dem Neustart?
Jeff Axelrod
7
Diese Antwort ist falsch. Installieren Sie einfach das Cygwin- ca-certificatesPaket, um die fehlenden Stammzertifikate zu erhalten. Warum hat diese Antwort so viele Höhen bekommen?
Rurban
32
Deaktivieren Sie die SSL-Zertifikatüberprüfung nicht. Dies kommt in Tools und Anwendungscode in der gesamten Branche nur allzu oft vor. Es öffnet Sie für einen Mann im mittleren Angriff. Wenn Sie SSL verwenden möchten, verwenden Sie es ordnungsgemäß.
Tim
430

Hinweis: Das Deaktivieren der SSL-Überprüfung hat Auswirkungen auf die Sicherheit . Es ermöglicht Man in the Middle-Angriffen, wenn Sie Git verwenden, um Daten über ein Netzwerk zu übertragen. Stellen Sie sicher, dass Sie die Auswirkungen auf die Sicherheit vollständig verstanden haben, bevor Sie diese als Lösung verwenden. Oder noch besser, installieren Sie die Stammzertifikate.

Eine Möglichkeit besteht darin, die SSL-CERT-Überprüfung zu deaktivieren:

git config --global http.sslVerify false

Dadurch wird verhindert, dass CURL die HTTPS-Zertifizierung überprüft.

Nur für ein Repository:

git config http.sslVerify false
Yi Zhao
quelle
17
Wenn Sie Ihre globalen Einstellungen (z. B. alle Repos) nicht bearbeiten möchten, schließen Sie --global
Erin
57
Könnten Sie bitte einen Hinweis hinzufügen, wie extrem gefährlich dies ist?
Chronial
26
Das ist eine schreckliche Idee. Es gibt einen Grund, warum Zertifikate überprüft werden sollten. Wenn Sie das Zertifikat nicht als vertrauenswürdig verifizieren, kann das Zertifikat von jedem generiert werden und Sie sind möglicherweise anfällig für einen Mann im mittleren Angriff.
Mark Carey
24
Deaktivieren Sie die SSL-Überprüfung nicht!
Tim
14
Für alle "mach es nicht" Leute: Sicher ist dies nicht der sicherste Ansatz überhaupt. ABER es ist weitaus besser, überhaupt kein SSL zu haben! Da einige Leute nur ihre privaten einfachen Git-Server betreiben, ist dies für sie in Ordnung. Sicher, für echte Sicherheit ist es KEINE GO-Einstellung. Am unsichersten ist es, die einfachen Bytes durch das Netzwerk zu senden.
Peter Stegnar
109

Ich wollte, dass Git das aktualisierte Zertifikatspaket verwendet, ohne das zu ersetzen, das mein gesamtes System verwendet. So kann Git eine bestimmte Datei in meinem Home-Verzeichnis verwenden:

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

Aktualisieren Sie jetzt .gitconfig, um dies für die Peer-Überprüfung zu verwenden:

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

Beachten Sie, dass ich einen absoluten Pfad verwende. Git führt hier keine Pfaderweiterung durch, sodass Sie sie nicht ~ohne einen hässlichen Kludge verwenden können. Alternativ können Sie die Konfigurationsdatei überspringen und den Pfad über die Umgebungsvariable festlegenGIT_SSL_CAINFO stattdessen .

Um dies zu beheben, setzen Sie GIT_CURL_VERBOSE=1. Der Pfad der CA-Datei, die Git verwendet, wird in Zeilen angezeigt, die in der Ausgabe mit "CAfile:" beginnen.

kenchilada
quelle
12
Für mich ist dies die beste Antwort: Es funktioniert unter Unix (eigentlich NetBSD), es betrifft nur Git und nichts anderes auf dem System und es erfordert keinen Root- / Administratorzugriff. Vielen Dank!
Eric
1
Perfekt, man kann es sogar noch besser machen. Ich habe mein altes /etc/ssl/certs/ca-certificates.crtauf meinem Ubuntu 8.04 LTS durch diese Datei ersetzt und es hat magisch funktioniert!
Michael-O
1
@ Eric danke für die Erwähnung von NetBSD, da dies bedeutete, dass ich diese Antwort gefunden habe. NetBSD ist etwas seltsam. Ich habe das OpenSSL-Paket installiert, aber selbst das bringt Ihnen nicht die Zertifikate, sondern nur ein Platzhalterverzeichnis.
Atomicules
+200 Genialer, es hat auch auf meiner Ubuntu-Box funktioniert. Sie müssen die Zertifikatsprüfung in git nicht deaktivieren. Führen Sie einfach diese Schnellkorrektur durch.
Colin D Bennett
11
Ausgezeichnete Antwort, Sie können die manuelle Bearbeitung der Datei ~ / .gitconfig mit dem folgenden Befehl überspringen:git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
Aron Ahmadia
41

Beachten Sie, dass ich Folgendes ausführen musste, damit dies funktioniert (RVM-Installation unter CentOS 5.6):

export GIT_SSL_NO_VERIFY=true

und danach war das Standardinstallationsverfahren zum Einrollen des RVM-Installationsprogramms in Bash ein Vergnügen :)

seanp2k
quelle
13
gleicher Effekt wie git config --global http.sslverify false
Dyno Fu
20
Das ist EXTREM GEFÄHRLICH! Bei der Überprüfung von SSL-Zertifikaten geht es darum, Ihren Code vor Manipulationen zu schützen, wenn Sie ihn über HTTPS übertragen! Wenn Sie es deaktivieren, können böswillige Personen Schwachstellen und andere unangenehme Dinge in Ihren Code einfügen, während Sie ihn pushen und abrufen!
Wenn ich http.sslVerify auf false setze, wird die Verbindung dann gesichert? und es ist ein guter Weg zu verwenden? Dazwischen verwenden wir die pfsense Firewall
Nullpointer
@ Ravi wird die Verbindung technisch funktionieren, ja, aber es ist eindeutig keine gute Idee. Wenn sowohl Ihr Git-Ursprung als auch der lokale Computer intern sind und von Ihrer Organisation kontrolliert werden, ist dies möglicherweise passabel . Gemäß dem Kommentar von user456814 können Sie durch Deaktivieren der Überprüfung MITM-Angriffe ausführen.
Doktor J.
40

Eine sehr einfache Lösung: Ersetzen Sie https: // durch git: //

Verwenden Sie git: //the.repository anstelle von https: //the.repository und es wird funktionieren.

Ich hatte dieses Problem unter Windows mit TortoiseGit und dies löste es.

Klodom
quelle
Ich denke, das funktioniert, weil es SSL nicht überprüft git://. Wie in dieser Antwort oben erwähnt , ist das Deaktivieren der SSL-Überprüfung ein Sicherheitsrisiko.
Danijar
5
@danijar Der Grund, warum dies funktioniert, ist, dass es überhaupt nicht SSL verwendet . Das git://Protokoll verwendet SSH, bei dem anstelle eines SSL-Zertifikats öffentliche und private SSH-Schlüsselpaare zur Authentifizierung und Verschlüsselung verwendet werden.
11
@Cupcake git://verwendet kein SSH. Siehe Das SSH-Protokoll und das Git-Protokoll .
Nyuszika7h
@ Nyuszika7h Oh, du hast recht. Ich werde immer git://verwirrt mit [email protected]:user/project.git, die SCP-ish Syntax ist .
31

Die beliebteste Antwort (von Alexey Vishentsev) lautet:

Das Problem ist, dass auf Ihrem System keine Zertifizierungsstellenzertifikate installiert sind. Und diese Zertifikate können nicht mit der setup.exe von cygwin installiert werden.

Diese letzte Behauptung ist jedoch falsch (jetzt oder immer, ich weiß es nicht).

Alles, was Sie tun müssen, ist zum Cygwin-Setup zu gehen und das Paket 'ca-certificates' einzuschließen (es befindet sich unter Net). Das hat den Trick für mich getan.

Dirkjot
quelle
1
Der Fehler "cygwin git" wird angezeigt, CAfile: /etc/ssl/ca-bundle.crtwährend das Paket "cygwin ca-certificates" installiert wird /usr/ssl/certs/ca-bundle.crt. Daher musste bearbeitet werden ~/.gitconfig, um den Ort anzugeben: [http]dannsslCAinfo = /usr/ssl/certs/ca-bundle.crt
maxpolk
@maxpolk: Ich hätte einen Link erstellt, aber der Effekt ist der gleiche. Dies ist eindeutig ein Fehler in Cygwin Git. Haben Sie darüber nachgedacht, ein Ticket zu erheben? sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
Dirkjot
Ab heute 23.05.2013 funktioniert cygwin git über https einwandfrei: Wenn Sie zufällig auch cygwin's installiert haben / daran denken ca-certificates.
Bobbogo
Ich bin von dieser Frage hierher gekommen , die darauf hinwies, dass hier eine Antwort zu finden ist. Für mich funktionieren jedoch weder die verknüpfte Antwort noch diese Antwort. TortoiseSVN gibt weiter auserror: SSL certificate problem, verify that the CA cert is OK.
ODER Mapper
Wo genau installieren wir die Cygwin-Installationsdateien vom Paketmanager? Müssen sich die ca-Zertifikate im bin-Ordner von Git befinden?
221b
16

Ich kenne die ursprünglichen Fragenlisten von Cygwin, aber hier ist die Lösung für CentOS:

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

Quelle: http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/

Herman J. Radtke III
quelle
Das hat großartig für mich funktioniert; Sie sollten jedoch wahrscheinlich zuerst eine Sicherungskopie des Originals erstellen, wie vom OP vorgeschlagen. Es scheint so, als ob dies passiert, wenn Github sein Zertifikat erneuert, wenn Sie sich auf einem System befinden, das ein älteres hat.
Evan Donovan
Unter CentOS 5 habe ich es behoben yum update openssl, wodurch auch das Ca-Bundle aktualisiert wird.
Raarts
Wenn Sie dieser Option folgen, sollten Sie den SHA-256-Hash der Datei überprüfen, bevor Sie sie verwenden. Sie können die sha256sum für die aktuelle Datei auf andere Weise als durch die von Ihnen eingerichtete Locke erhalten (z. B. durch einen Browser auf einem anderen Computer, der bereits sicher eingerichtet ist), und sie dann mit der Ausgabe von vergleichen sha256sum /etc/pki/tls/certs/ca-bundle.crt, um sicherzustellen, dass Sie die richtige Datei haben Datei.
Kbolino
16

So klonen Sie unter Windows, während Sie SSL einstellen, auf false zu überprüfen:

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

Wenn Sie klonen möchten, ohne Ihre globalen Einstellungen zu ändern.

FlavourScape
quelle
14

Unter CentOS 5.x wurde yum update openssldas openssl-Paket, mit dem das System aktualisiert wurde , einfach aktualisiertca-bundle.crt und das Problem für mich behoben wurde.

Gleiches kann für andere Distributionen gelten.

Wayne Walker
quelle
lecker! Dies funktionierte bei mir für eine alte Installation (4.1.2) von Red Hat Linux. Vielen Dank!
Josh
13

Wenn Sie nur den Cygwin-Git-Client mit github.com verwenden möchten, gibt es einen viel einfacheren Weg, ohne das mühsame Herunterladen, Extrahieren, Konvertieren und Aufteilen von Zertifizierungsdateien durchführen zu müssen. Gehen Sie wie folgt vor (ich gehe von Windows XP mit Cygwin und Firefox aus)

  1. Gehen Sie in Firefox zur Github-Seite (beliebig).
  2. Klicken Sie auf das Github-Symbol in der Adressleiste, um das Zertifikat anzuzeigen
  3. Klicken Sie sich durch "Weitere Informationen" -> "Zertifikat anzeigen" -> "Details" und wählen Sie jeden Knoten in der Hierarchie aus, beginnend mit dem obersten. Klicken Sie für jeden von ihnen auf "Exportieren" und wählen Sie das PEM-Format aus:
    • GTECyberTrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. Speichern Sie die oben genannten Dateien irgendwo auf Ihrem lokalen Laufwerk, ändern Sie die Erweiterung in .pem und verschieben Sie sie in Ihrer Cygwin-Installation nach / usr / ssl / certs (Windows: c: \ cygwin \ ssl \ certs).
  5. (optional) Führen Sie c_reshash über die Bash aus.

Das ist es.

Natürlich wird nur eine Zertifikatshierarchie installiert, die Sie für github benötigen. Sie können diese Methode natürlich mit jeder anderen Site verwenden, ohne 200 Zertifikate von Sites installieren zu müssen, denen Sie (nicht unbedingt) vertrauen.

esquifit
quelle
8

Wenn Sie unter Mac OS X arbeiten, können Sie das ca-cert-Bundle installieren über homebrew:

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

Die Formel installiert das Zertifikatspaket auf Ihrer Freigabe über:

share.install 'ca-bundle.crt'

Die shareMethode ist nur ein Alias ​​für /usr/local/shareund das Curl-Ca-Bündel wird von bereitgestellt Mozilla. Es ist das, worauf Sie in vielen Fragen verweisen. Ich hoffe, dies hilft, da es nicht sehr einfach ist, wie Sie dies unter Mac OS X angehen. brew install curlSie werden auch nicht viel davon bekommen, da es nur ein Fass ist und nicht verknüpft wird (das Ausführen which curlwird immer ausgegeben /usr/bin/curl, was die Standardeinstellung ist, die mit Ihrem ausgeliefert wird OS). Dieser Beitrag kann auch von Wert sein .

Sie müssen SSL natürlich vor der Installation deaktivieren, homebrewda es sich um ein Git-Repo handelt. Tun Sie einfach, was Curl sagt, wenn während der SSL-Überprüfung ein Fehler auftritt, und:

$ echo insecure >> ~/.curlrc

Sobald Sie homebrewzusammen mit dem installiert sind curl-ca-bundle, löschen Sie.curlrc und versuchen Sie, ein Repo auf Github zu klonen. Stellen Sie sicher, dass keine Fehler vorliegen und Sie können loslegen.

HINWEIS: Wenn Sie darauf zurückgreifen .curlrc, entfernen Sie es bitte von Ihrem System, sobald Sie mit dem Testen fertig sind. Diese Datei kann schwerwiegende Probleme verursachen. Verwenden Sie sie daher für vorübergehende Zwecke und mit Vorsicht. brew doctorwird sich beschweren, falls Sie vergessen, es von Ihrem System zu löschen).

HINWEIS: Wenn Sie Ihre Version von git aktualisieren, müssen Sie diesen Befehl erneut ausführen, da Ihre Systemeinstellungen gelöscht werden (sie werden relativ zur git-Binärdatei basierend auf der Version gespeichert).

Also nach dem Laufen:

$ brew update
$ brew upgrade

Wenn Sie eine neue Version von git erhalten, führen Sie sie einfach erneut aus:

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

Und du bist fertig.

Wenn Sie eine neue Version von git haben, wird Folgendes ausgeführt:

$ git config -l --system

sollte Ihnen einen Fehler in der Art von geben

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

Das ist dein Tipp, dass du git sagen musst, wo sich das Mozilla Ca-Bundle befindet.

AKTUALISIEREN:

.curlrckann oder kann nicht die Lösung für Ihr Problem sein. Installieren Sie in jedem Fall einfach das Mozilla Ca-Bundle auf Ihrem Computer, unabhängig davon, ob Sie es manuell herunterladen müssen oder nicht. Das ist hier wichtig. Sobald Sie das Ca-Bundle erhalten haben, können Sie loslegen. Führen Sie einfach den Befehl git config aus und zeigen Sie git auf das ca-Bundle.

AKTUALISIEREN

Ich musste kürzlich hinzufügen:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crtzu meiner .zshenvPunktedatei seit ich benutze zsh. Die git configOption funktionierte in den meisten Fällen, aber als ich ( rvm get stablezum Beispiel) Github über SSL traf , stieß ich immer noch auf Zertifikatprobleme. @Maverick hat in seinem Kommentar darauf hingewiesen, aber nur für den Fall, dass jemand es verpasst oder davon ausgeht, dass er diese Umgebungsvariable nicht unbedingt exportieren muss, zusätzlich zum Ausführen vongit config --system.... Befehl . Danke und hoffe das hilft.

AKTUALISIEREN

Es sieht aus wie das curl-ca-Bündel wurde vor kurzem von Homebrew entfernt . Hier gibt es eine Empfehlung .

Sie möchten einige Dateien ablegen in:

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

A-Dubb
quelle
1
Sie können auch Folgendes versuchen: export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Maverick
Hallo, ich habe ein ähnliches Problem ( stackoverflow.com/questions/20939105/… ) und dasselbe Problem tritt auf, wenn ich versuche, Home- Brew zu installieren. Was kann ich in diesem Fall tun? Wenn Sie "git config --system http.sslcainfo /usr/local/share/ca-bundle.crt" in meine Konsole eingeben, wird der Fehler zurückgegeben: Die Konfigurationsdatei /Applications/Xcode.app/Contents/Developer/usr/etc/ konnte nicht gesperrt werden. gitconfig: Keine solche Datei oder kein solches Verzeichnis ". Danke für deine Hilfe!
Mathieu
@ Mathieu das ist ziemlich seltsam. Ihr System scheint auf eine Version von git relativ zu XCode zu verweisen. Was ist die Ausgabe von "Welcher Git" von Ihrem Terminal aus?
A-Dubb
6

Sie können diesen Befehl im Terminal ausprobieren :

git config --global http.sslVerify false

reza_khalafi
quelle
5

Ich habe dieses Problem mit apt-cyg (einem großartigen Installationsprogramm ähnlich wie apt-get) behoben, um die ca-Zertifikate (einschließlich Git und viele mehr) einfach herunterzuladen :

apt-cyg install ca-certificates

Hinweis : apt-cyg sollte zuerst installiert werden. Sie können dies über die Windows-Befehlszeile tun:

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

Schließen Sie Windows cmd und öffnen Sie Cygwin Bash:

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
Sagunmen
quelle
Das hat bei mir nicht funktioniert - ich bekomme immer noch den gleichen Fehler.
Holdenlee
4

auf einem rasbery pi hatte ich

pi @ raspbmc: ~ $ git-Klon http: //github.com/andreafabrizi/Dropbox-Uploader .git Klonen in 'Dropbox-Uploader' ... Fehler: Problem mit dem SSL-CA-Zertifikat (Pfad? Zugriffsrechte?) beim Zugriff http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal: HTTP-Anforderung fehlgeschlagen

so id a

sudo apt-get install ca-certificates

dann

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

hat funktioniert

Fred
quelle
4

Wenn Sie ein Debian-basiertes Betriebssystem verwendet haben, können Sie es einfach ausführen

apt-get install ca-Zertifikate

Patrick
quelle
4

Ich hatte das gleiche Problem mit Solaris Express 11. Es hat eine Weile gedauert, aber ich konnte herausfinden, wo die Zertifikate platziert werden mussten. Laut /etc/openssl/openssl.cnf lautet der Pfad für Zertifikate / etc / openssl / certs. Ich habe die Zertifikate platziert, die mit den oben genannten Ratschlägen von Alexey erstellt wurden.

Sie können überprüfen, ob die Dinge funktionieren, indem Sie openssl in der Befehlszeile verwenden:

openssl s_client -connect github.com:443
Martin Smith
quelle
3

Versuchen Sie es mit einer .netrc-Datei, die sich über https authentifiziert. Erstellen Sie einen Dateiaufruf .netrcin Ihrem Home-Verzeichnis und legen Sie diesen ab:

machine github.com login myusername password mypass

Siehe diesen Beitrag für weitere Informationen:

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

Travis Reeder
quelle
Dies ist ein Problem bei der Zertifikatsüberprüfung, kein Problem bei der Authentifizierung. Bei einigen Betriebssystemen (einschließlich des Betriebssystems, das vom OP ausgeführt wird) ist das neue Zertifikat des CA-ausstellenden Githubs nicht in der Bestandsliste enthalten.
Charles Duffy
3

Verbessern Sie die Lösung von RouMao, indem Sie die GIT / Curl-SSL-Überprüfung in Windows cmd vorübergehend deaktivieren:

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

Das Gute an dieser Lösung ist, dass sie nur im aktuellen cmd-Fenster wirksam wird.

Marschall
quelle
3
Das ist EXTREM GEFÄHRLICH! Bei der Überprüfung von SSL-Zertifikaten geht es darum, Ihren Code vor Manipulationen zu schützen, wenn Sie ihn über HTTPS übertragen! Wenn Sie es deaktivieren, können böswillige Personen Schwachstellen und andere unangenehme Dinge in Ihren Code einfügen, während Sie ihn pushen und abrufen!
3

Hast du deine Zeit überprüft?

Ich habe mich absolut geweigert, meine Git-Operationen unsicher zu machen, und nachdem ich alles versucht hatte, was hier erwähnt wurde, fiel mir auf, dass eine mögliche Ursache dafür, dass Zertifikate die Überprüfung nicht bestehen, darin besteht, dass die Daten falsch sind (entweder das Ablaufdatum des Zertifikats oder die lokale Uhr).

Sie können dies einfach überprüfen, indem Sie dateein Terminal eingeben . In meinem Fall (ein neuer Himbeer-Pi) wurde die lokale Uhr auf 1970 eingestellt, also einfach ntpdate -u 0.ubuntu.pool.ntp.orgalles repariert. Für ein rPi würde ich auch empfehlen, dass Sie das folgende Skript in einen täglichen Cron-Job einfügen (sagen wir /etc/cron.daily/ntpdate):

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1
Deiu
quelle
3

Generieren Sie das Zugriffstoken aus Github und speichern Sie es, da es nicht mehr angezeigt wird.

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

oder,

git config --global http.sslVerify false
git clone https://github.com/repo.git
Naseer-shaik
quelle
2

Ich habe das gleiche Problem beim Konfigurieren von Git auf einer kollaborativen Entwicklungsplattform festgestellt, die ich verwalten muss.

Um es zu lösen:

  • Ich habe die auf dem Server installierte Version von Curl aktualisiert. Laden Sie die letzte Version auf der Website herunter. Laden Sie die Seite von curl herunter und folgen Sie dem Installationsverfahren. Installationsverfahren von curl

  • Holen Sie sich das Zertifikat der Behörde zurück, die das Zertifikat für den Server bereitstellt.

  • Fügen Sie dieses Zertifikat der von curl verwendeten CAcert-Datei hinzu. Auf meinem Server befindet es sich in /etc/pki/tls/certs/ca-bundle.crt.

  • Konfigurieren Sie git für die Verwendung dieser Zertifikatdatei, indem Sie die .gitconfig-Datei bearbeiten und den Pfad sslcainfo festlegen. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • Auf dem Client-Computer müssen Sie das Zertifikat abrufen und auch die .gitconfig-Datei konfigurieren.

Ich hoffe, das wird einigen von Ihnen helfen.

G. Pfeiffer
quelle
1

Ich habe alles versucht, irgendwann habe ich in der Hosts-Datei nachgesehen und dort gab es einen zufälligen Eintrag für Github. Durch Entfernen des Alias ​​wurde das Problem behoben

% systemroot% \ system32 \ drivers \ etc \ hosts

GenericEventHandler
quelle
1

Ich habe einfach die SSL-Zertifikatauthentifizierung deaktiviert und die einfache Benutzernamen-Kennwortanmeldung wie unten gezeigt verwendetGeben Sie hier die Bildbeschreibung ein

0x3bfc
quelle
0

Ich brauchte die Zertifikate nur für Cygwin und Git, also habe ich getan, was @esquifit gepostet hat. Ich musste jedoch Schritt 5 manuell ausführen, da c_rehash auf meinem System nicht verfügbar war. Ich habe dieses Handbuch befolgt: Installieren von CA-Zertifikaten stattdessen im OpenSSL-Framework .

Sonate
quelle
0

Ich brauchte zwei Dinge:

  1. Gehen Sie zum Cygwin- Setup und fügen Sie das Paket ' ca-certificates ' hinzu (es befindet sich unter Net) (wie an anderer Stelle angegeben).

  2. Sagen Sie git, wo sich die installierten Zertifikate befinden:

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

    (Ausführliche Option wird nicht benötigt)

    Oder die Option dauerhaft speichern:

    Git-Konfiguration --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    git ...

user2896631
quelle
-2

Ich hatte das gleiche Problem. Der Zertifikatimport oder der Befehl zum Deaktivieren der SSL-Überprüfung funktionierte nicht. Es stellt sich heraus, dass das Kennwort für den Netzwerk-Proxy abgelaufen ist. Es wurde die Proxy-Konfiguration eingegeben. in der .gitconfig-Datei in meinem Windows-Benutzerprofil. Ich habe gerade den gesamten Eintrag entfernt und es hat wieder funktioniert.

Saft
quelle
-2

Auf einem Mac OSX 10.5-System konnte ich dies mit einer einfachen Methode zum Laufen bringen. Führen Sie zuerst die Github-Prozeduren und den Test aus, die für mich in Ordnung waren, und zeigen Sie, dass mein Zertifikat tatsächlich in Ordnung war. https://help.github.com/articles/generating-ssh-keys

ssh -T [email protected]

Dann bemerkte ich endlich noch ein URL-Format für Fernbedienungen. Ich habe die anderen oben ausprobiert und sie haben nicht funktioniert. http://git-scm.com/book/ch2-5.html

[email protected]:MyGithubUsername/MyRepoName.git

Ein einfacher "git push myRemoteName" hat super funktioniert!

AnneTheAgile
quelle
-2

Ich hatte kürzlich (Juli 2014) ein ähnliches Problem und stellte unter OS X (10.9.4) fest, dass ein "DigiCert High Assurance EV-Stammzertifizierungsstellenzertifikat" abgelaufen war (obwohl ich auch ein anderes nicht abgelaufenes hatte).

  1. Öffnen Sie den Schlüsselbundzugriff
  2. Zertifikate nach "DigiCert" durchsuchen
  3. Menü Ansicht> Abgelaufene Zertifikate anzeigen

Ich habe zwei Zertifikate mit dem Namen "DigiCert High Assurance EV Root CA" gefunden, eines mit Ablauf von November 2031 und eines mit Ablauf von Juli 2014 (einige Tage zuvor). Das Löschen des abgelaufenen Zertifikats hat das Problem für mich behoben.

Hoffe das hilft.

craigb
quelle
-2

Fügen Sie dies hinzu, wenn Sie Msys / MinGW GIT verwenden

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
John Chain
quelle