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.git
einzustellen, aber die Eingabeaufforderungen für ein Kennwort gedrückt, aber nichts getan, sobald ich es eingegeben habe.
https://username:<password>github.com/username/ExcelANT.git
und 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=1
gibt 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.
Antworten:
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:
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:
Installation zur Verwendung des "normalen" SSH-Protokolls für die Git-Kommunikation
Durch Hinzufügen zum
~/.ssh/config
Trick kann dieser Trick für normale SSH-Verbindungen verwendet werden.Jetzt können Sie testen, ob es funktioniert, indem Sie an gitproxy senden
(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.
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
quelle
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.git
wurde es in kürzester Zeit betriebsbereit .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:
Installieren Sie tatsächlich Stammzertifikate. Curl Jungs für Sie Zertifikate von Mozilla extrahiert .
cacert.pem
Datei 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:
Wichtig : Um verwenden zu können, müssen
c_rehash
Sie auch installierenopenssl-perl
.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.
quelle
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"}'
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?ca-certificates
Paket, um die fehlenden Stammzertifikate zu erhalten. Warum hat diese Antwort so viele Höhen bekommen?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:
Dadurch wird verhindert, dass CURL die HTTPS-Zertifizierung überprüft.
Nur für ein Repository:
quelle
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:
Aktualisieren Sie jetzt
.gitconfig
, um dies für die Peer-Überprüfung zu verwenden: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.quelle
/etc/ssl/certs/ca-certificates.crt
auf meinem Ubuntu 8.04 LTS durch diese Datei ersetzt und es hat magisch funktioniert!git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
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 :)
quelle
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.
quelle
git://
. Wie in dieser Antwort oben erwähnt , ist das Deaktivieren der SSL-Überprüfung ein Sicherheitsrisiko.git://
Protokoll verwendet SSH, bei dem anstelle eines SSL-Zertifikats öffentliche und private SSH-Schlüsselpaare zur Authentifizierung und Verschlüsselung verwendet werden.git://
verwendet kein SSH. Siehe Das SSH-Protokoll und das Git-Protokoll .git://
verwirrt mit[email protected]:user/project.git
, die SCP-ish Syntax ist .Die beliebteste Antwort (von Alexey Vishentsev) lautet:
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.
quelle
CAfile: /etc/ssl/ca-bundle.crt
wä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
sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
ca-certificates
.error: SSL certificate problem, verify that the CA cert is OK.
Ich kenne die ursprünglichen Fragenlisten von Cygwin, aber hier ist die Lösung für CentOS:
Quelle: http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/
quelle
yum update openssl
, wodurch auch das Ca-Bundle aktualisiert wird.sha256sum /etc/pki/tls/certs/ca-bundle.crt
, um sicherzustellen, dass Sie die richtige Datei haben Datei.So klonen Sie unter Windows, während Sie SSL einstellen, auf false zu überprüfen:
Wenn Sie klonen möchten, ohne Ihre globalen Einstellungen zu ändern.
quelle
Unter CentOS 5.x wurde
yum update openssl
das 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.
quelle
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)
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.
quelle
Wenn Sie unter Mac OS X arbeiten, können Sie das ca-cert-Bundle installieren über
homebrew
:Die Formel installiert das Zertifikatspaket auf Ihrer Freigabe über:
Die
share
Methode ist nur ein Alias für/usr/local/share
und das Curl-Ca-Bündel wird von bereitgestelltMozilla
. 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 curl
Sie werden auch nicht viel davon bekommen, da es nur ein Fass ist und nicht verknüpft wird (das Ausführenwhich curl
wird 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,
homebrew
da es sich um ein Git-Repo handelt. Tun Sie einfach, was Curl sagt, wenn während der SSL-Überprüfung ein Fehler auftritt, und:Sobald Sie
homebrew
zusammen mit dem installiert sindcurl-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 doctor
wird 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:
Wenn Sie eine neue Version von git erhalten, führen Sie sie einfach erneut aus:
Und du bist fertig.
Wenn Sie eine neue Version von git haben, wird Folgendes ausgeführt:
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:
.curlrc
kann 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.crt
zu meiner.zshenv
Punktedatei seit ich benutzezsh
. Diegit config
Option funktionierte in den meisten Fällen, aber als ich (rvm get stable
zum 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
quelle
export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Sie können diesen Befehl im Terminal ausprobieren :
quelle
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 :
Hinweis : apt-cyg sollte zuerst installiert werden. Sie können dies über die Windows-Befehlszeile tun:
Schließen Sie Windows cmd und öffnen Sie Cygwin Bash:
quelle
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
dann
hat funktioniert
quelle
Wenn Sie ein Debian-basiertes Betriebssystem verwendet haben, können Sie es einfach ausführen
quelle
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:
quelle
Versuchen Sie es mit einer .netrc-Datei, die sich über https authentifiziert. Erstellen Sie einen Dateiaufruf
.netrc
in Ihrem Home-Verzeichnis und legen Sie diesen ab:Siehe diesen Beitrag für weitere Informationen:
https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj
quelle
Verbessern Sie die Lösung von RouMao, indem Sie die GIT / Curl-SSL-Überprüfung in Windows cmd vorübergehend deaktivieren:
Das Gute an dieser Lösung ist, dass sie nur im aktuellen cmd-Fenster wirksam wird.
quelle
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
date
ein Terminal eingeben . In meinem Fall (ein neuer Himbeer-Pi) wurde die lokale Uhr auf 1970 eingestellt, also einfachntpdate -u 0.ubuntu.pool.ntp.org
alles 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
):quelle
Generieren Sie das Zugriffstoken aus Github und speichern Sie es, da es nicht mehr angezeigt wird.
oder,
quelle
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.
quelle
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
quelle
Ich habe einfach die SSL-Zertifikatauthentifizierung deaktiviert und die einfache Benutzernamen-Kennwortanmeldung wie unten gezeigt verwendet
quelle
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 .
quelle
Ich brauchte zwei Dinge:
Gehen Sie zum Cygwin- Setup und fügen Sie das Paket ' ca-certificates ' hinzu (es befindet sich unter Net) (wie an anderer Stelle angegeben).
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 ...
quelle
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.
quelle
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
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
Ein einfacher "git push myRemoteName" hat super funktioniert!
quelle
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).
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.
quelle
Fügen Sie dies hinzu, wenn Sie Msys / MinGW GIT verwenden
quelle