Git: SSL certificate problem: certificate has expired

Da willste mal schnell dein erstes kleines Repository bei Codeberg.org lokal klonen und dann wirft dir der Befehl $ git clone die im Titel genannte Fehlermeldung an den Kopf. Wäre ja zu schön, wenn es in so einem Fall das bemängelte Zertifikat auch gleich noch mit "Name und Anschrift" nennen würde, aber das ist dann wohl zu viel verlangt.

Das Zertifikat lässt sich dann aber z. B. mit $ openssl s_client -showcerts -connect codeberg.org:443 ermitteln.

CONNECTED(0000074C)
---
Certificate chain
 0 s:/CN=codeberg.org
   i:/C=US/O=Let's Encrypt/CN=R3
-----BEGIN CERTIFICATE-----
[...]
    Timeout   : 300 (sec)
    Verify return code: 10 (certificate has expired)
---

Zumindest beim in Git 2.10.0 für Windows XP enthaltenen OpenSSL 1.0.2h muss man nun die 5 Minuten abwarten, bis das Timeout ausgelöst wird.

[...]
depth=3 O = Digital Signature Trust Co., CN = DST Root CA X3
verify error:num=10:certificate has expired
notAfter=Sep 30 14:01:15 2021 GMT

Mit diesen Informationen "bewaffnet", lande ich bei meiner Suche im Internet auf Git for Windows: SSL certificate problem: certificate has expired und SSL certificate problem: certificate has expired -- the OpenSSL 1.0.2 vs LetsEncrypt issue.

Bei letzterem Suchergebnis steht u. a. However, OpenSSL 1.0.2 has a "bug" that causes it to prefer the expired certificate.

Die ebenfalls dort erwähnte Zeichenkette MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT finde ich tatsächlich in diversen Dateien der Ordner c:/Programme/Git/usr/ssl/ und c:/Programme/Git/mingw32/ssl/.

Der Befehl $ git config -l | grep ssl sagt mir, dass wohl mingw32/ssl/ der entscheidende Ordner ist. Wofür usr/ssl/ da ist, weiß ich nicht.

http.sslcainfo=C:/Programme/Git/mingw32/ssl/certs/ca-bundle.crt

Die Lösung ist nun, sich von https://git-scm.com/download/win die aktuelle portable Version von Git zu holen, die beiden ssl-Ordner dort zu extrahieren und Git 2.10.0 "unterzujubeln". Läuft nun wieder! :-)