In der Schule müssen wir also ein Zertifikat installieren, um auf https-Sites zugreifen zu können. In Firefox kann ich das Zertifikat importieren. Über die Befehlszeile geht das allerdings nicht. Wenn ich es beispielsweise ausführe, git push
erhalte ich:
fatal: unable to access 'https://github.com/user/repo': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Wie importiere ich ein Zertifikat, um dies zu entfernen? Der Import muss für mich authentifizieren können. Außerdem ist es eine .cer
Datei, daher .crt
wird die Antwort nicht funktionieren. Außerdem möchte ich keine Schritte zum Einrichten von Git, da ich dies bereits getan habe. Ich möchte wissen, ob dies möglich ist. Oder kann ich die Authentifizierung mit dem git
Befehl einfach vollständig deaktivieren und Zertifikate ignorieren lassen, wie diesdie Antworthier steht? Außerdem möchte ich nicht, dass die Webseite geladen wird, ich habe Firefox so eingestellt. Ich möchte, git push
dass der Befehl die Standardausgabe wie folgt ausgibt:
[master 630d087] message
1 file changed, 93 insertions(+), 80 deletions(-)
rewrite somefile (84%)
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 978 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To https://github.com/User/Repo.git
851ae39..630d087 master -> master
Hinweis: Ich habe herausgefunden, dass es git config --global http.sslverify false
. Aber ich würde gerne eine Antwort für alles sehen, nicht nur einen Git-Hack
Antwort1
Kurz zusammengefasst
Damit alles funktioniert und nicht nur Ihr Browser, müssen Sie dieses CA-Zertifikat zum vertrauenswürdigen CA-Repository des Systems hinzufügen.
In Ubuntu:
- Gehen Sie zu /usr/local/share/ca-certificates/
- Einen neuen Ordner erstellen, zB "sudo mkdir school"
- Kopieren Sie die .crt-Datei in den Schulordner
- Stellen Sie sicher, dass die Berechtigungen in Ordnung sind (755 für den Ordner, 644 für die Datei).
- Führen Sie „sudo update-ca-certificates“ aus.
Warum
Lassen Sie mich auch erklären, was los ist, damit die anderen Poster sehen, warum sie kein Zertifikat benötigen, um Github über HTTPS zu verwenden.
Was dort passiert, ist, dass Ihre Schule die gesamte SSL-Kommunikation abfängt, wahrscheinlich um sie zu überwachen.
Um das zu erreichen, führen sie im Wesentlichen einen „Man-in-the-Middle“-Angriff aus, und deshalb beschwert sich Ihr Browser zu Recht, dass er das Zertifikat von GitHub nicht überprüfen kann. Ihr Schulproxy greift auf das Zertifikat von GitHub zurück und stellt stattdessen sein eigenes Zertifikat bereit.
Wenn Ihr Browser versucht, das von der Schule bereitgestellte Zertifikat anhand der Zertifizierungsstelle zu überprüfen, die das GitHub-Zertifikat signiert hat, schlägt dies zu Recht fehl.
Damit die SSL-Verbindung in der Schule funktioniert, müssen Sie diesen „MITM“-Angriff bewusst akzeptieren. Und das tun Sie, indem Sie das CA-Zertifikat der Schule als vertrauenswürdiges Zertifikat hinzufügen.
Wenn Sie dieser Schulzertifizierungsstelle vertrauen, funktioniert Ihre Überprüfung des gefälschten GitHub-Zertifikats, da das gefälschte GitHub-Zertifikat von der Schulzertifizierungsstelle überprüft wird.
Beachten Sie, dass eine SSL-Verbindung nicht mehr sicher ist, da Ihr Schuladministrator alle Ihre verschlüsselten Verbindungen abfangen kann.
Antwort2
Auf der ca-certificates
Verpackung finden Sie die Anleitung README.Debian
:
Wenn Sie lokale Zertifizierungsstellen installieren möchten, denen implizit vertraut wird, speichern Sie die Zertifikatsdateien als einzelne Dateien mit der Endung „
.crt
into“/usr/local/share/ca-certificates/
und führen Sie sie erneut ausupdate-ca-certificates
.
Beachten Sie, dass hier ein anderes Verzeichnis erwähnt wird als in den anderen Antworten:
/usr/local/share/ca-certificates/
Nach dem Kopieren /usr/local/share/ca-certificates/
können Sie die Berechtigungen des Zertifikats aktualisieren und es sudo update-ca-certificates
wie in der Antwort des Telegraphers beschrieben ausführen. Sie werden in der Ausgabe sehen, dass das Zertifikat hinzugefügt wurde.
Antwort3
Die Erweiterungen .crt, .pem und .cer sind austauschbar. Ändern Sie einfach die Dateinamenerweiterung. Sie haben dieselbe Form. Versuchen Sie Folgendes:
$ sudo cp mycert.cer /usr/share/ca-certificates/mycert.pem
$ sudo dpkg-reconfigure ca-certificates
$ sudo update-ca-certificates
$ git config --global http.sslCAInfo /usr/share/ca-certificates/mycert.pem
Antwort4
Ich verwende folgende Zusammenstellung bisheriger Antworten:
sudo -i
echo | openssl s_client -showcerts -servername site.example.com -connect example.com:443 2>/dev/null | awk '/-----BEGIN CERTIFICATE-----/, /-----END CERTIFICATE-----/' >> /usr/local/share/ca-certificates/ca-certificates.crt
update-ca-certificates
Oft sind site.example.com
und example.com
die gleichen Hostnamen.