it-swarm.com.de

Das SSL-Zertifikat wurde beim Versuch, über HTTPS hinter der Firewall auf GitHub zuzugreifen, zurückgewiesen

Ich stecke hinter einer Firewall 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 zu stellen, habe jedoch nach einem Passwort gefragt, habe aber nach der Eingabe nichts unternommen. https://username:<password>github.com/username/ExcelANT.git und klonen Sie das leere Repo von Grund auf neu, aber jedes Mal gibt es mir den gleichen Fehler

fehler: Problem mit dem SSL-Zertifikat. Vergewissern Sie sich, dass das CA-Zertifikat in Ordnung ist. Einzelheiten:
Fehler: 14090086: SSL-Routinen: SSL3_GET_SERVER_CERTIFICATE: Zertifikatsüberprüfung beim Zugriff fehlgeschlagen https://github.com/username/ExcelANT.git/info/refs

Einschalten GIT_CURL_VERBOSE=1 gibt mir

* Über die Verbindung () zu github.com Port 443 (# 0)
* 207.97.227.239 wird versucht ... * Speicherorte für die Zertifikatüberprüfung wurden erfolgreich festgelegt:
* CAfile: keine
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: Zertifikatprüfung fehlgeschlagen
* Gültig bis gelöscht
* Verbindung Nr. 0 wird geschlossen
* Verbinde () mit github.com Port 443 (# 0)
* 207.97.227.239 wird versucht ... * Speicherorte für die Zertifikatüberprüfung wurden erfolgreich festgelegt:
* CAfile: keine
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: Zertifikatprüfung fehlgeschlagen
* Gültig bis gelöscht
* Verbindung Nr. 0 wird geschlossen
Fehler: Problem mit dem SSL-Zertifikat. Vergewissern Sie sich, dass das CA-Zertifikat in Ordnung ist. Einzelheiten:
Fehler: 14090086: SSL-Routinen: SSL3_GET_SERVER_CERTIFICATE: Zertifikatsüberprüfung beim Zugriff fehlgeschlagen https://github.com/username/ExcelANT.git/info/refs

fatal: HTTP request failed

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

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

375
oharab

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 darstellt.

Es gibt einen besseren Weg als die Verwendung von http-Zugriff, nämlich den von github auf 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 Paketierungstool verfügbar. Für MacOSX ist es von MacPorts erhältlich und muss mindestens gebraut werden.

Die Befehlszeile lautet wie folgt:

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

Der Proxyhost und der Proxyport sind die Koordinaten des https-Proxys. Der Ziel-Host und der Ziel-Port ist der Ort des Hosts, zu dem getunnelt werden soll. Die Authfile ist eine Textdatei mit 1 Zeile, die Ihren Proxy-Server-Benutzernamen/Passwort 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

Indem Sie dies zum ~/.ssh/config hinzufügen, 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 ssh-ing an gitproxy senden

[email protected]:~$ 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.
[email protected]:~$

(Hinweis: Wenn Sie sich noch nie bei Github angemeldet haben, werden Sie von ssh aufgefordert, den Serverschlüssel zur bekannten Hosts-Datei hinzuzufügen. Wenn Sie paranoid sind, sollten Sie den RSA-Fingerabdruck mit dem auf der Github-Site, auf der Sie sich befinden, übereinstimmen 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. um Ihr Privatkonto von Ihrem Geschäftskonto 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 auf Linux, Macs und Windows.

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

56
Peter Tillemans

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

Update: Installiere das Net/ca-certificate Paket in cygwin (danke dirkjot)

Es gibt zwei Lösungen:

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

    cacert.pem Datei ist was Sie suchen. Diese Datei enthält> 250 CA-Zertifikate (weiß nicht, wie man dieser Anzahl von Personen vertraut). Sie müssen diese Datei herunterladen, in einzelne Zertifikate aufteilen, in/usr/ssl/certs (Ihren CApath) ablegen und indizieren.

    Hier ist, wie es geht. Mit cygwin setup.exe installierst du die Pakete curl und openssl:

    $ 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 c_rehash zu verwenden, müssen Sie openssl-Perl ebenfalls installieren.

  2. Ignorieren Sie die SSL-Zertifikatüberprüfung.

    WARNUNG: Das Deaktivieren der SSL-Zertifikatüberprüfung hat Auswirkungen auf die Sicherheit. Ohne Überprüfung der Authentizität von SSL/HTTPS-Verbindungen kann ein böswilliger Angreifer einen vertrauenswürdigen Endpunkt (wie GitHub oder einen anderen entfernten Git-Host) vortäuschen, und Sie sind anfällig für einen Man-in-the-Middle-Angriff . Vergewissern Sie sich, 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...
    
514

Hinweis: Das Deaktivieren der SSL-Überprüfung hat Auswirkungen auf die Sicherheit. Es ermöglicht Man in the Middle-Angriffen, wenn Sie mit Git Daten über ein Netzwerk übertragen. Vergewissern Sie sich, dass Sie die Sicherheitsaspekte vollständig verstanden haben, bevor Sie dies 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

Dies verhindert, dass CURL die HTTPS-Zertifizierung verifiziert.

Nur für ein Repository:

git config http.sslVerify false
421
Yi Zhao

Ich wollte, dass Git das aktualisierte Zertifikatspaket verwendet, ohne das zu ersetzen, das mein gesamtes System verwendet. So veranlassen Sie Git, eine bestimmte Datei in meinem Ausgangsverzeichnis zu verwenden:

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

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

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

Hinweis Ich verwende einen absoluten Pfad. Da Git hier keine Pfaderweiterung vornimmt, können Sie ~ nicht ohne einen hässlichen Kludge verwenden. Alternativ können Sie die Konfigurationsdatei überspringen und den Pfad stattdessen über die Umgebungsvariable GIT_SSL_CAINFO festlegen.

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

109
kenchilada

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 die Standard-Installationsprozedur zum Einrollen des RVM-Installationsprogramms in die Bash ein Vergnügen :)

41
seanp2k

Eine sehr einfache Lösung: Ersetze https: // durch git: //

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

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

40
klodoma

Die populärste Antwort (von Alexey Vishentsev) lautet:

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

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

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

31
dirkjot

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/

16

Unter CentOS 5.x hat ein einfaches yum update openssl das openssl-Paket aktualisiert, wodurch die Systemdatei ca-bundle.crt aktualisiert und das Problem für mich behoben wurde.

Gleiches gilt möglicherweise auch für andere Distributionen.

14
Wayne Walker

So klonen Sie unter Windows, während Sie SSL einstellen:

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

Wenn Sie klonen möchten ohne borfing Ihre globalen Einstellungen.

14
FlavorScape

Wenn Sie nur den Cygwin-Git-Client mit github.com verwenden möchten, gibt es einen viel einfacheren Weg, ohne den Aufwand des Herunterladens, Extrahierens, Konvertierens und Aufteilens von Zertifikatsdateien. 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, der mit dem obersten beginnt. Klicken Sie jeweils auf "Exportieren" und wählen Sie das PEM-Format aus:
    • GTECyberTrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. Speichern Sie die obigen 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 aus der Bash aus.

Das ist es.

Dies installiert natürlich nur eine Zertifizierungshierarchie, 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.

13
esquifit

Unter Mac OS X können Sie das ca-cert-Bundle über homebrew installieren:

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

Die Formel installiert das Zertifikats-Bundle auf Ihrer Freigabe über:

share.install 'ca-bundle.crt'

Die share -Methode ist nur ein Alias ​​für /usr/local/share, und das curl-ca-bundle wird von Mozilla bereitgestellt. Es ist das, worauf Sie in vielen Fragen verweisen. Hoffe, dies hilft, da es nicht ganz einfach ist, wie man dies unter Mac OS X angeht. brew install curl bringt auch nicht viel, da es nur Fass und nicht verknüpft ​​(läuft) ist which curl gibt immer /usr/bin/curl aus (dies ist die Standardeinstellung, die mit Ihrem Betriebssystem geliefert wird). Dieser Beitrag kann auch einen gewissen Wert haben .

Sie müssen natürlich SSL deaktivieren, bevor Sie homebrew installieren, da es sich um ein Git-Repo handelt. Tun Sie einfach, was curl sagt, wenn bei der SSL-Überprüfung ein Fehler auftritt, und:

$ echo insecure >> ~/.curlrc

Sobald Sie homebrew zusammen mit curl-ca-bundle installiert haben, 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.

ANMERKUNG: Wenn Sie auf .curlrc zurückgreifen, entfernen Sie es bitte von Ihrem System, sobald Sie mit dem Testen fertig sind. Diese Datei kann schwerwiegende Probleme verursachen. Verwenden Sie sie daher nur zu vorübergehenden Zwecken und mit Vorsicht. brew doctor wird sich beschweren, falls Sie vergessen, es von Ihrem System zu entfernen.

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 gespeichert) auf die Git-Binärdatei basierend auf der Version).

Also nach dem Laufen:

$ brew update
$ brew upgrade

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

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

Und du bist fertig.

Zuletzt, wenn Sie eine neue Version von Git haben:

$ git config -l --system

sollte Ihnen einen Fehler im Sinne von geben

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

das ist dein tipp, den du git sagen musst, wo sich das mozilla ca-bundle befindet.

UPDATE:

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

UPDATE

Ich musste kürzlich hinzufügen:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt zu meiner .zshenv Punktdatei, da ich zsh verwende. Die Option git config hat in den meisten Fällen funktioniert, aber beim Aktivieren von Github über SSL (z. B. rvm get stable) sind immer noch Zertifikatprobleme aufgetreten. @Maverick wies in seinem Kommentar darauf hin, aber nur für den Fall, dass jemand es übersieht oder annimmt, dass er diese Umgebungsvariable nicht unbedingt exportieren muss, um den Befehl git config --system.... auszuführen. Danke und hoffe das hilft.

UPDATE

Es sieht so aus, als wäre curl-ca-bundlekürzlich aus Homebrew entfernt . Es gibt eine Empfehlung hier .

Sie möchten einige Dateien ablegen in:

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

8
A-Dubb

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):

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
5
sagunms

Ich hatte das gleiche Problem mit Solaris Express 11. Es hat eine Weile gedauert, aber ich konnte feststellen, wo die Zertifikate abgelegt werden mussten. Nach /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
4
Martin Smith

auf einem rasbery pi hatte ich

pi @ raspbmc: ~ $ git clone 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

4
fred

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

apt-get installiert ca-Zertifikate

4
Patrick

Versuchen Sie es mit einer .netrc-Datei. Diese wird über https authentifiziert. Erstellen Sie einen Dateiaufruf .netrc in Ihrem Home-Verzeichnis und fügen Sie diesen ein:

machine github.com login myusername password mypass

Weitere Informationen finden Sie in diesem Beitrag:

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

3
Travis Reeder

Hast du deine Zeit überprüft?

Ich habe mich absolut geweigert, meinen Git-Betrieb unsicher zu machen, und nachdem ich alle hier genannten Punkte ausprobiert habe, ist mir aufgefallen, dass ein möglicher Grund dafür, dass Zertifikate die Überprüfung nicht bestehen, darin besteht, dass die Daten falsch sind (entweder das Ablaufdatum des Zertifikats oder das lokal) Uhr).

Sie können dies einfach überprüfen, indem Sie date in ein Terminal eingeben. In meinem Fall (ein neuer Raspberry Pi) wurde die lokale Uhr auf 1970 gestellt, sodass ein einfacher ntpdate -u 0.ubuntu.pool.ntp.org alles reparierte. Für ein RPI würde ich auch empfehlen, dass Sie das folgende Skript in einen täglichen Cron-Job einfügen (sagen Sie /etc/cron.daily/ntpdate):

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

Verbessern Sie die RouMao-Lösung, 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.

3
Marshal

Ich hatte das gleiche Problem, Git auf einer kollaborativen Entwicklungsplattform zu konfigurieren, 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 Download-Seite von curl und folgen Sie den Installationsanweisungen Installationsanweisungen von curl

  • Erhalten Sie 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 Datei .gitconfig 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 euch helfen.

2
G. Pfeiffer

Ich habe alles versucht, irgendwann habe ich in der hosts-Datei nachgesehen und es gab einen zufälligen Eintrag für github. Das Entfernen des Alias ​​behebt das Problem

% systemroot%\system32\drivers\etc\hosts

1

Ich habe einfach die SSL-Zertifikatauthentifizierung deaktiviert und den einfachen Benutzernamen und das Passwort für die Anmeldung wie unten gezeigt verwendet .enter image description here

1
0x3bfc

Ich brauchte zwei Dinge:

  1. gehen Sie zu cygwin setup und fügen Sie das Paket 'ca-certificates' hinzu (es befindet sich unter Net) (wie an anderer Stelle angegeben).

  2. Sag git, wo die installierten Zertifikate zu finden sind:

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

    (Ausführliche Option ist nicht erforderlich)

    Oder speichern Sie die Option dauerhaft:

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

    git ...

0
user2896631

Generieren Sie das Zugriffstoken von 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
0
Naseer-shaik

Ich brauchte die Zertifikate nur für Cygwin und Git, also habe ich das 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 diese Anleitung befolgt: Installieren von CA-Zertifikaten in das OpenSSL-Framework stattdessen.

0
Sonata

Sie können diesen Befehl im Terminal ausführen :

git config --global http.sslVerify false

0
reza_khalafi