408 Stimmen

SSL-Zertifikat beim Versuch, auf GitHub über HTTPS hinter einer Firewall zuzugreifen, abgelehnt

Ich sitze hinter einer Firewall fest und muss daher HTTPS verwenden, um auf mein GitHub-Repository zuzugreifen. Ich verwende cygwin 1.7.7 auf Windows XP.

Ich habe versucht, die Fernbedienung auf https://username@github.com/username/ExcelANT.git aber Push fordert zur Eingabe eines Passworts auf, tut aber nichts, sobald ich es eingegeben habe. https://username:<password>github.com/username/ExcelANT.git und Klonen der leeren Repo von Grund auf, aber jedes Mal gibt es mir den gleichen Fehler

Fehler: SSL-Zertifikatsproblem, überprüfen Sie, ob das CA-Zertifikat in Ordnung ist. Einzelheiten:
error:14090086:SSL-Routinen:SSL3_GET_SERVER_CERTIFICATE:Zertifikatsüberprüfung während des Zugriffs fehlgeschlagen https://github.com/username/ExcelANT.git/info/refs

Einschalten GIT_CURL_VERBOSE=1 gibt mir

* Über connect() zu github.com Port 443 (#0)
* Versucht 207.97.227.239... * Zertifikat-Überprüfungsorte erfolgreich gesetzt:
* CAfile: keine
CA-Pfad: /usr/ssl/certs
* Problem mit dem SSL-Zertifikat, überprüfen Sie, ob das CA-Zertifikat in Ordnung ist. Einzelheiten:
error:14090086:SSL-Routinen:SSL3_GET_SERVER_CERTIFICATE:Zertifikatsüberprüfung fehlgeschlagen
* Abgelaufen gelöscht
* Schließen der Verbindung #0
* Über connect() zu github.com Port 443 (#0)
* Versucht 207.97.227.239... * Zertifikat-Überprüfungsorte erfolgreich gesetzt:
* CAfile: keine
CApath: /usr/ssl/certs
* Problem mit dem SSL-Zertifikat, überprüfen Sie, ob das CA-Zertifikat in Ordnung ist. Einzelheiten:
error:14090086:SSL-Routinen:SSL3_GET_SERVER_CERTIFICATE:Zertifikatsüberprüfung fehlgeschlagen
* Abgelaufen gelöscht
* Schließen der Verbindung #0
Fehler: SSL-Zertifikatsproblem, überprüfen Sie, ob das CA-Zertifikat in Ordnung ist. Einzelheiten:
error:14090086:SSL-Routinen:SSL3_GET_SERVER_CERTIFICATE:Zertifikatsüberprüfung während des Zugriffs 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 in der Git-Konfiguration nicht eingestellt, aber es ist ein ISA-Server, der NTLM-Authentifizierung benötigt, nicht Basic, wenn also jemand weiß, wie man Git zur Verwendung von NTLM zwingt, bin ich aufgeschmissen.

535voto

Alexey Vishentsev Punkte 5584

Das Problem ist, dass Sie keine Zertifikate der Zertifizierungsstelle auf Ihrem System installiert haben. Und diese Zertifikate können nicht mit der setup.exe von Cygwin installiert werden.

Aktualisierung: Installation des Pakets Net/ca-certificates in cygwin (danke dirkjot)

Es gibt zwei Lösungen:

  1. Root-Zertifikate tatsächlich installieren. Curl Jungs extrahiert für Sie Zertifikate von Mozilla .

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

So wird es gemacht. Installieren Sie mit cygwin setup.exe die Pakete curl und openssl ausführen:

<!-- language: lang-bash -->

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

Wichtig : Für die Verwendung c_rehash müssen Sie installieren openssl-perl auch.

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

    WARNUNG: Die Deaktivierung der SSL-Zertifikatsüberprüfung 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 ausgeben (z. B. GitHub oder ein anderer entfernter Git-Host), und Sie sind anfällig für einen Man-in-the-Middle-Angriff . Vergewissern Sie sich, dass Sie die Sicherheitsprobleme vollständig verstehen und Ihr Bedrohungsmodell, bevor Sie dies als Lösung verwenden.

     $ env GIT_SSL_NO_VERIFY=true git clone https://github...

450voto

Yi Zhao Punkte 6658

Nota: Die Deaktivierung der SSL-Überprüfung hat Auswirkungen auf die Sicherheit . Es ermöglicht Man-in-the-Middle-Angriffe, wenn Sie Git zur Datenübertragung über ein Netzwerk verwenden. Vergewissern Sie sich, dass Sie die Auswirkungen auf die Sicherheit vollständig verstehen, bevor Sie diese Lösung verwenden. Oder installieren Sie besser die Root-Zertifikate.

Eine Möglichkeit besteht darin, die SSL-CERT-Verifizierung 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

114voto

kenchilada Punkte 7250

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

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

Jetzt aktualisieren .gitconfig für die Überprüfung durch Gleichrangige zu verwenden:

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

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

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

Geändert, um von http zu https zu wechseln.

63voto

Peter Tillemans Punkte 34359

Sie können diese Antwort überspringen, wenn Sie das Problem mit den Zertifikaten lösen wollen. Diese Antwort beschäftigt sich mit dem Tunneln von ssh durch die Firewall, was IMHO eine bessere Lösung für den Umgang mit Firewall/Proxy-Dingern ist.

Es gibt eine bessere Möglichkeit als den http-Zugang, nämlich die Nutzung des von github angebotenen ssh-Dienstes an Port 443 des Servers ssh.github.com.

Wir verwenden ein Werkzeug namens Korkenzieher. Es ist sowohl für CygWin (über das Setup auf der Cygwin-Homepage) als auch für Linux unter Verwendung Ihres bevorzugten Paketierungswerkzeugs verfügbar. Für MacOSX ist es zumindest über macports und brew verfügbar.

Die Befehlszeile lautet wie folgt:

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

Der Proxyhost und der Proxyport sind die Koordinaten des https-Proxys. targetthost und targetport sind die Koordinaten des Hosts, zu dem getunnelt werden soll. Die authfile ist eine Textdatei mit 1 Zeile, die Ihren Proxy-Server-Benutzernamen/Passwort enthält, getrennt durch einen Doppelpunkt

z.B.:

abc:very_secret

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

Durch das Hinzufügen zu den ~/.ssh/config Dieser Trick kann auch 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 sich per ssh mit dem Gitproxy verbinden

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 bei Github angemeldet haben, wird ssh Sie auffordern, den Serverschlüssel zur Datei der bekannten Hosts hinzuzufügen. Wenn Sie paranoid sind, empfiehlt es sich, den RSA-Fingerabdruck mit dem auf der Github-Website, auf die Sie Ihren Schlüssel hochgeladen haben, angezeigten zu vergleichen).

Eine leichte Variante dieser Methode ist der Fall, dass Sie mit einem anderen Schlüssel auf ein Repository zugreifen müssen, z. B. um Ihr privates Konto von Ihrem beruflichen 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

Viel Spaß!

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

Wenn Sie möchten, können Sie Lesen Sie mehr darüber in diesem Blogbeitrag

42voto

seanp2k Punkte 541

Beachten Sie, dass ich, um dies zum Funktionieren zu bringen (RVM-Installation auf CentOS 5.6), musste ich die folgenden ausführen:

export GIT_SSL_NO_VERIFY=true

und danach hat die Standard-Installationsprozedur zum Einbinden des RVM-Installers in die Bash wunderbar funktioniert :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X