So installieren Sie Zertifikate für die Befehlszeile

So installieren Sie Zertifikate für die Befehlszeile

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 pusherhalte 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 .cerDatei, daher .crtwird 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 gitBefehl 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 pushdass 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-certificatesVerpackung 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 „ .crtinto“ /usr/local/share/ca-certificates/und führen Sie sie erneut aus update-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-certificateswie 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.comund example.comdie gleichen Hostnamen.

verwandte Informationen