So installieren Sie Zertifikate für die Befehlszeile


72

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. Mit der Kommandozeile kann ich das jedoch nicht. Zum Beispiel git pushbekomme ich beim Laufen :

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 dieses zu entfernen? Der Import muss sich für mich authentifizieren können. Es ist auch eine .cerDatei, daher .crtfunktioniert die Antwort für nicht. Außerdem möchte ich keine Schritte zum Einrichten von Git, wie ich es bereits habe. Ich möchte wissen, ob das möglich ist. Oder kann ich einfach die Authentifizierung mit dem gitBefehl vollständig deaktivieren und Zertifikate ignorieren, wie in der Antwort hier angegeben? Außerdem möchte ich nicht, dass die Webseite geladen wird. Ich habe Firefox dafür eingerichtet. Ich möchte, dass der git pushBefehl 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 es herausgefunden git config --global http.sslverify false. Aber ich würde gerne eine Antwort auf alles sehen, nicht nur einen Trottel-Hack



@EricCarvalho nein, das ist für .crt. Ich brauche.cer
Universal Electricity

Haben Sie ein Problem mit Ihrem git-Befehl oder was möchten Sie tun? Gib mir einen Ping mit @AB
AB

@AB Ich möchte git erlauben, das Zertifikat der Schule zu verwenden, anstatt zu versuchen, das github-Zertifikat zu verwenden. Wenn das nicht funktioniert, kann sich das Zertifikat der Schule für mich authentifizieren
Universal Electricity

Beachten Sie, dass die Dateierweiterungen .crt und .cer austauschbar sind. Ändern Sie einfach die Dateinamenerweiterung. Sie haben dieselbe Form.
Mike

Antworten:


117

TL; DR

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:

  • Gehe zu / usr / local / share / ca-certificates /
  • Erstelle einen neuen Ordner, 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 vor sich geht, ist, dass Ihre Schule die gesamte SSL-Kommunikation abfängt, wahrscheinlich, um sie zu überwachen.

Um das zu tun, ist das, was sie tun, im Wesentlichen ein "Mann in der Mitte" -Angriff, und aus diesem Grund beklagt sich Ihr Browser zu Recht, dass er das Zertifikat von github nicht verifizieren kann. Ihr Schulvertreter nimmt das Github-Zertifikat entgegen und stellt stattdessen ein eigenes Zertifikat zur Verfügung.

Wenn Ihr Browser versucht, das von der Schule bereitgestellte Zertifikat anhand der Zertifizierungsstelle zu überprüfen, die das Zertifikat von github 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 Sie tun dies, indem Sie das CA-Zertifikat der Schule als vertrauenswürdiges Zertifikat hinzufügen.

Wenn Sie dieser Schulzertifizierungsstelle vertrauen, funktioniert Ihre Überprüfung des Zertifikats für gefälschte Githubs, da das Zertifikat für gefälschte Githubs von der Schulzertifizierungsstelle überprüft wird.

Beachten Sie, dass die SSL-Verbindung nicht mehr sicher ist, da Ihr Schuladministrator alle Ihre verschlüsselten Verbindungen abfangen kann.


Dies ist im Wesentlichen die gleiche Antwort wie Mikes ohne die dpkg-Neukonfiguration, die nicht benötigt werden sollte. Was möglicherweise passiert ist, dass Git oder eine andere Befehlszeile hinsichtlich der SSL-Überprüfung nicht 100% Standard ist. Es kann erforderlich sein, das zu verwenden, was Sie "Git-Hack" nennen, um den zuerst von Ihrer Schule implementierten "SSL-Hack" zu umgehen.
Telegrapher

Beachten Sie auch, dass Sie Root-Berechtigungen benötigen, um diese Befehle auszuführen, damit der Befehl sudo erfolgreich ausgeführt werden kann. Andernfalls können Sie die Zertifizierungsstellen des Systems nicht aktualisieren.
Telegrapher

2
Bitte bearbeiten Sie Ihre Antwort, um die zusätzlichen Fakten zu liefern - hinterlassen Sie keinen Kommentar.
guntbert

1
Ich glaube das sollte sein /usr/local/share/ca-certificates/. Sehen Sie man update-ca-certificates, was davon spricht, dass es eine Whitelist gibt, /usr/share/ca-certificates/aber wie implizit alles im /usr/local/share/ca-certificates/Verzeichnis als vertrauenswürdig eingestuft wird .
Ian Hickson

3
auf Ubuntu 16.04 nach dem Hinzufügen der CA musste /usr/local/share/ca-certificatesich dafür verwenden, sudo dpkg-reconfigure ca-certificatesum die CA abzuholen.
Matt L.

41

Das ca-certificatesPaket enthält die folgenden Anweisungen README.Debian:

Wenn Sie lokale Zertifizierungsstellen installieren möchten, die implizit vertrauenswürdig sind, legen Sie die Zertifikatdateien als einzelne Dateien ab, die mit .crtin enden, /usr/local/share/ca-certificates/und führen Sie sie erneut aus update-ca-certificates.

Beachten Sie, dass es hier ein Verzeichnis gibt, das sich von den anderen Antworten unterscheidet:

/usr/local/share/ca-certificates/

Nach dem Kopieren in können /usr/local/share/ca-certificates/Sie dann die Berechtigungen des Zertifikats aktualisieren und ausführen, sudo update-ca-certificateswie in Telegraphers answer angegeben. Sie werden in der Ausgabe sehen, dass das Zertifikat hinzugefügt wurde.


4
Dies funktionierte auch für Ubuntu 16.04. Der Pfad in der akzeptierten Antwort hat bei mir nicht funktioniert.
Plazgoth

Dies muss eine akzeptierte Antwort sein. Dies ist eine funktionierende Lösung für Ubuntu Server 16.04 LTS.
Lasitha Benaragama

15

Die Erweiterungen .crt, .pem und .cer sind austauschbar. Ändern Sie einfach die Dateinamenerweiterung. Sie haben die gleiche Form. Versuche dies:

$ 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

Nun, obwohl dies wahr ist, hat es nicht geholfen. Aber in Zukunft könnte es Menschen helfen
Universal Electricity

Ich fügte noch eine Zeile hinzu, versuche das, damit git deinem Zertifikat vertraut. Beachte, dass ich cer geändert habe. in zwei der 4 Schritte statt .crt. @ Einhörner sind sehr, sehr lecker
Mike

3
Wenn Ihre .CER-Datei binär ist (DER-Format), können Sie die Erweiterung nicht einfach ändern. Verwenden Sie openssl(1)diese Option , um das Zertifikat in das PEM-Format zu konvertieren. Laufen:$ openssl -in mycert.cer -inform DER -out mycert.pem -outform PEM
Arch User

1
@Archuser Vielleicht ist das der richtige Befehl:openssl x509 -inform DER -in certificate.cer -out certificate.pem
artificerpi

5

Ich verwende die folgende Zusammenstellung früherer 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

Es kann so modifiziert werden, dass es einzeilig ist.

Oft sind beide site.example.comund example.comdieselben Hostnamen.


3

Ich habe alle Lösungen gelesen und so gelöst;

sudo openssl x509 -inform DER -in certificate.cer -out certificate.crt

sudo mv certificate.crt /usr/share/ca-certificate/

cd /usr/share/ca-certificate

sudo chmod 644 certificate.crt

sudo dpkg-reconfigure ca-certificates

sudo update-ca-certificates

1

Ich hatte ein ähnliches Problem, bei dem die Installation des Zertifikats in Firefox und Google Chrome funktionierte, aber die Aktualisierung im Terminal sudo apt-get updatenicht funktionierte und 403 Forbidden IP-Fehler verursachte. Ich hatte auch eine sample.cer-Datei. Im Grunde muss ich es also zuerst in .crt konvertieren.

sudo openssl x509 -inform DER -in sample.cer -out sample.crt

Währenddessen sudo dpkg-reconfigure ca-certificateskonnte ich das erforderliche Zertifikat nicht finden. Das Problem bei mir ist, dass ich das Zertifikat am falschen Ort kopiert habe.

Anstatt es bei zu kopieren, habe $/usr/share/ca-certificates ich es bei zu kopieren. $/usr/local/share/ca-certificates Aber indem ich es an der richtigen Stelle platzierte, löste sich mein Problem. Ich kann die Pakete aber immer noch nicht aktualisieren oder neue Pakete installieren.

Schnellreparatur (für mich am):

Verwendung von FTP anstelle von http

sudo sed -i s/http/ftp/ /etc/apt/sources.list && apt-get update

und obiger Befehl funktionierte. Bitte kopieren Sie die Datei sources.list, bevor Sie die Änderungen vornehmen.

Wenn irgendetwas nicht klar oder nicht richtig ist, bitte korrigieren Sie mich.


0

Für den Zugriff auf eine Website mit httpsbenötigen Sie unabhängig davon, ob Sie einen CLI- oder GUI-Browser verwenden, kein Schulzertifikat.

Zur Verwendung gitüber http (s) müssen Sie Ihren öffentlichen Schlüssel in Ihren Profileinstellungen auf GitHub registrieren .

Mehr Infos hier . Ändere dein GitHub-Profil hier .


Versuche dies:

sudo apt-get install w3m
w3m https://github.com/

… Funktioniert ohne zusätzliches Zertifikat.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.