Der Systemadministrator für ein Projekt, an dem ich arbeite, hat entschieden, dass SSH "zu viel Ärger" ist. Stattdessen hat er Git so eingerichtet, dass er über eine https://
URL (und die Authentifizierung mit Benutzername / Passwort) zugänglich ist . Der Server für diese URL zeigt ein selbstsigniertes Zertifikat an. Daher riet er allen, die Zertifikatsüberprüfung zu deaktivieren. Dies scheint mir in Bezug auf die Sicherheit kein gutes Setup zu sein.
Ist es möglich, Git mitzuteilen, dass für Remote X (oder besser für jede Remote in einem Repository, mit dem gerade begonnen wird https://$SERVERNAME/
) ein bestimmtes Zertifikat akzeptiert werden soll und nur dieses Zertifikat? Reduzieren Sie grundsätzlich das Serverschlüsselverhalten von SSH.
git
ssl-certificate
zwol
quelle
quelle
Antworten:
Kurz:
~/git-certs/cert.pem
) Dateigit
um diesem Zertifikat mithilfe deshttp.sslCAInfo
Parameters zu vertrauenIn weiteren Details:
Holen Sie sich ein selbstsigniertes Zertifikat des Remote-Servers
Angenommen, die Server-URL lautet
repos.sample.com
und Sie möchten über den Port darauf zugreifen443
.Es gibt mehrere Möglichkeiten, wie Sie es bekommen.
Zertifikat mit openssl abrufen
Fangen Sie die Ausgabe in einer Datei ab
cert.pem
und löschen Sie alle bis auf einen Teil zwischen (und einschließlich)-BEGIN CERTIFICATE-
und-END CERTIFICATE-
Der Inhalt der resultierenden Datei ~ / git-certs / cert.pem kann folgendermaßen aussehen:
Holen Sie sich das Zertifikat mit Ihrem Webbrowser
Ich verwende Redmine mit Git-Repositorys und greife auf dieselbe URL für die Web-Benutzeroberfläche und den Zugriff auf die Git-Befehlszeile zu. Auf diese Weise musste ich meinem Webbrowser eine Ausnahme für diese Domain hinzufügen.
Mit Firefox ging ich zu
Options -> Advanced -> Certificates -> View Certificates -> Servers
, fand dort den selbstsignierten Host, wählte ihn aus und mit derExport
Schaltfläche erhielt ich genau die gleiche Datei, die mit erstellt wurdeopenssl
.Hinweis: Ich war etwas überrascht, es ist kein Name der Behörde sichtbar erwähnt. Das ist in Ordnung.
Das vertrauenswürdige Zertifikat in einer dedizierten Datei haben
Vorherige Schritte führen dazu, dass das Zertifikat in einer Datei gespeichert ist. Es spielt keine Rolle, um welche Datei es sich handelt, solange sie für Ihren Git beim Zugriff auf diese Domain sichtbar ist. ich benutzte
~/git-certs/cert.pem
Hinweis: Wenn Sie vertrauenswürdigere selbstsignierte Zertifikate benötigen, legen Sie diese in derselben Datei ab:
Dies soll funktionieren (aber ich habe es nur mit einem einzigen Zertifikat getestet).
Konfigurieren Sie git so, dass es diesem Zertifikat vertraut
Sie können auch versuchen, dies systemweit zu tun, indem Sie
--system
anstelle von verwenden--global
.Und testen Sie es: Sie können jetzt mit Ihrem Server kommunizieren, ohne auf Folgendes zurückgreifen zu müssen:
Wenn Sie Ihren Git bereits auf Unkenntnis von SSL-Zertifikaten eingestellt haben, deaktivieren Sie ihn:
und Sie können auch überprüfen, ob Sie alles richtig gemacht haben, ohne Rechtschreibfehler:
Was alle Variablen auflisten soll, haben Sie global festgelegt. (Ich habe http zu htt falsch geschrieben).
quelle
OSX-Benutzeranpassungen.
Das Befolgen der Schritte der akzeptierten Antwort funktionierte bei mir mit einem kleinen Zusatz bei der Konfiguration unter OSX.
Ich habe die
cert.pem
Datei in einem Verzeichnis unter meinem OSX-angemeldeten Benutzer abgelegt und daher den Speicherort für das vertrauenswürdige Zertifikat angepasst.Konfigurieren Sie git so, dass es diesem Zertifikat vertraut:
quelle