Hinzufügen eines SSL-Zertifikats nur für Github (nicht alle Zertifikate aus dem ca-certificates-Paket)

13

Beim Zugriff auf Github über HTTPS wird folgende Fehlermeldung angezeigt:

error: server certificate verification failed. 
CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Das liegt daran, dass ich keine Zertifikate habe /etc/ssl/certs/. Ich weiß, wie ich dieses Problem beheben kann. Ich kann das Paket ca-certificatesaus dem Debian-Repository installieren . Das Problem ist jedoch, dass dadurch alle Zertifikate (Tausende) installiert werden, die ich nicht unbedingt akzeptieren / vertrauen möchte.

Wie kann ich ein Zertifikat nur für Github installieren?

ein Unterproblem / eine Unterfrage

Auf einem anderen Computer, auf dem das Paket ca-certificatesbereits installiert ist und git funktioniert, ist mir aufgefallen, dass einige Zertifikate /etc/ssl/certs/ein Zertifikat pro Datei und andere mehrere Zertifikate in einer Datei enthalten. Die bestimmte Datei mit dem Github-Zertifikat /etc/ssl/certs/ca-certificates.crtenthält über 150 weitere Zertifikate:

$ grep 'BEGIN CERTIFICATE' /etc/ssl/certs/ca-certificates.crt | wc -l
159

Wie kann ich herausfinden, welches dieser 159 Zertifikate das richtige ist? (Mit Ausnahme von Brute Force - Aufteilen der Feile in zwei Hälften und Überprüfen beider Hälften, Wiederholen while n > 1).

Martin Vegter
quelle
Was versuchst du zu erreichen? Programmgesteuert Kontakt mit GitHub aufnehmen?
Nate W.
Haben Sie versucht, das Quellpaket herunterzuladen und dann nur das gewünschte Zertifikat zu extrahieren?
Jayhendren
Womit greifen Sie auf Github zu? Ein Kommandozeilen-Tool? ein Browser?
Mittwoch,

Antworten:

13

Um auf Ihren Github zuzugreifen, müssen Sie dies über ssh tun. Sie müssen also Ihren öffentlichen ssh-Schlüssel zu github hinzufügen. Danach können Sie über ssh auf github zugreifen, dh:

git init [email protected]:yourname/yourrepo.git

Siehe auch: Github: ssh-Schlüssel generieren , WikiHow

[Bearbeiten # 1]

ohne Zertifikatsprüfung:

GIT_SSL_NO_VERIFY=true git clone https://github.com/p/repo.git

oder authentifiziert

GIT_SSL_NO_VERIFY=true git clone https://user@pass:github.com/p/repo.git

Für mich ist immer noch nicht klar, wonach Sie fragen, weil Sie wissen, dass die Installation von CA-Zertifikaten das Problem beheben wird.

[Bearbeiten # 2]

Ok, die andere Frage war

wie man nur das Zertifikat hat, das benötigt wird, um über https auf github.com zuzugreifen

  1. Öffnen Sie Ihren Browser und navigieren Sie zu https://github.com/ . Klicken Sie auf den grünen Namen links von https://und klicken Sie auf Certificates. Auf der DetailsRegisterkarte sehen Sie die Zertifikatskette:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. Exportieren Sie jedes DigiCert-Zertifikat in eine Datei.

  3. Kopieren Sie die Dateien nach /etc/ssl/certs/
  4. Lass c_rehashdie Katze alle Zertifikate laufenca-certificates.crt
  5. du bist fertig.

Wie gesagt, ich bin kein Freund von solchen Aktionen, da Github die CAs jederzeit ändern kann, was immer zu zusätzlicher Arbeit führt.


quelle
1
Vielen Dank für den Vorschlag. Ich würde aber gerne githubper zugreifen https.
Martin Vegter
1

Wie bereits erwähnt, können Sie SSH-Schlüssel verwenden, anstatt sich auf HTTPS zu verlassen, um dieses Problem zu vermeiden, und möglicherweise eine bessere Sicherheit genießen.

Ich denke, Sie suchen nach einer Möglichkeit, Stammzertifikate / CA in / etc / ssl / certs zu installieren. Kurz gesagt, es reicht nicht aus, die PEM-codierte Datei einfach in / etc / ssl / certs zu speichern. Sie müssen auch den Hash dieses Zertifikats berechnen und einen Symlink in / etc / ssl / certs zu diesem Zertifikat erstellen Datei. Der Name des Symlinks muss das Hash-Suffix .0 sein, oder, wenn eine Hash-Kollision vorliegt, .1 und so weiter.

Hier finden Sie eine detaillierte Beschreibung sowie ein Beispielskript, mit dem Sie den Prozess automatisieren können: http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificates

Hoffe, das ist, wonach Sie gesucht haben, aber wie ich bereits sagte, sind SSH-Schlüssel wahrscheinlich die "bessere" Lösung. :)

Rouben Tchakhmakhtchian
quelle
c_rehashmacht das, was du erklärt hast. Siehe c_rehashManpage. Übrigens: Die Hashes müssen nicht berechnet werden. Das Catting der Zertifikate nach ca-certificates.crt ist ausreichend, da gitnur diese Datei gelesen wird. Außerdem wurde unter dem Link erklärt, wie die Zertifikate manuell mit openssl abgerufen werden können. Dies ist sehr zweifelhaft und provoziert einen Mann im mittleren Angriff. Ich würde es nicht empfehlen.