Kurz:
- Holen Sie sich das selbstsignierte Zertifikat
- Legen Sie es in eine (zB
~/git-certs/cert.pem
) Datei
- Stellen Sie ein,
git
um diesem Zertifikat mithilfe des http.sslCAInfo
Parameters zu vertrauen
In 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 zugreifen 443
.
Es gibt mehrere Möglichkeiten, wie Sie es bekommen.
Zertifikat mit openssl abrufen
$ openssl s_client -connect repos.sample.com:443
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:
-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
EwYDVQQIEwxMb3dlciBTYXhvbnkxEjAQBgNVBAcTCVdvbGZzYnVyZzEYMBYGA1UE
ChMPU2FhUy1TZWN1cmUuY29tMRowGAYDVQQDFBEqLnNhYXMtc2VjdXJlLmNvbTEj
MCEGCSqGSIb3DQEJARYUaW5mb0BzYWFzLXNlY3VyZS5jb20wHhcNMTIwNzAyMTMw
OTA0WhcNMTMwNzAyMTMwOTA0WjCBkzELMAkGA1UEBhMCREUxFTATBgNVBAgTDExv
d2VyIFNheG9ueTESMBAGA1UEBxMJV29sZnNidXJnMRgwFgYDVQQKEw9TYWFTLVNl
Y3VyZS5jb20xGjAYBgNVBAMUESouc2Fhcy1zZWN1cmUuY29tMSMwIQYJKoZIhvcN
AQkBFhRpbmZvQHNhYXMtc2VjdXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAMUZ472W3EVFYGSHTgFV0LR2YVE1U//sZimhCKGFBhH3ZfGwqtu7
mzOhlCQef9nqGxgH+U5DG43B6MxDzhoP7R8e1GLbNH3xVqMHqEdcek8jtiJvfj2a
pRSkFTCVJ9i0GYFOQfQYV6RJ4vAunQioiw07OmsxL6C5l3K/r+qJTlStpPK5dv4z
Sy+jmAcQMaIcWv8wgBAxdzo8UVwIL63gLlBz7WfSB2Ti5XBbse/83wyNa5bPJPf1
U+7uLSofz+dehHtgtKfHD8XpPoQBt0Y9ExbLN1ysdR9XfsNfBI5K6Uokq/tVDxNi
SHM4/7uKNo/4b7OP24hvCeXW8oRyRzpyDxMCAwEAATANBgkqhkiG9w0BAQUFAAOC
AQEAp7S/E1ZGCey5Oyn3qwP4q+geQqOhRtaPqdH6ABnqUYHcGYB77GcStQxnqnOZ
MJwIaIZqlz+59taB6U2lG30u3cZ1FITuz+fWXdfELKPWPjDoHkwumkz3zcCVrrtI
ktRzk7AeazHcLEwkUjB5Rm75N9+dOo6Ay89JCcPKb+tNqOszY10y6U3kX3uiSzrJ
ejSq/tRyvMFT1FlJ8tKoZBWbkThevMhx7jk5qsoCpLPmPoYCEoLEtpMYiQnDZgUc
TNoL1GjoDrjgmSen4QN5QZEGTOe/dsv1sGxWC+Tv/VwUl2GqVtKPZdKtGFqI8TLn
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
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 der Export
Schaltfläche erhielt ich genau die gleiche Datei, die mit erstellt wurde openssl
.
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:
-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
AnOtHeRtRuStEdCeRtIfIcAtEgOeShErExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
Dies soll funktionieren (aber ich habe es nur mit einem einzigen Zertifikat getestet).
Konfigurieren Sie git so, dass es diesem Zertifikat vertraut
$ git config --global http.sslCAInfo /home/javl/git-certs/cert.pem
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:
$ git config --global http.sslVerify false #NO NEED TO USE THIS
Wenn Sie Ihren Git bereits auf Unkenntnis von SSL-Zertifikaten eingestellt haben, deaktivieren Sie ihn:
$ git config --global --unset http.sslVerify
und Sie können auch überprüfen, ob Sie alles richtig gemacht haben, ohne Rechtschreibfehler:
$ git config --global --list
Was alle Variablen auflisten soll, haben Sie global festgelegt. (Ich habe http zu htt falsch geschrieben).