Problem mit git: server certificate verification failed

-Daemon-

Well-Known Member
Hallo allerseits,

ich habe ein Problem mit git: es ist nicht mehr möglich, Repos zu aktualisieren oder zu klonen. Aufgefallen ist es zuerst bei den ports:
Code:
$ git pull
fatal: unable to access 'https://git.FreeBSD.org/ports.git/': server certificate verification failed. CAfile: none CRLfile: none
$
Auch jedes beliebige andere Git-Repo schlägt fehl:
Code:
$ git clone https://github.com/tensorflow/tensorflow.git
Cloning into 'tensorflow'...
fatal: unable to access 'https://github.com/tensorflow/tensorflow.git/': server certificate verification failed. CAfile: none CRLfile: none
$ git clone https://gitlab.com/inkscape/inkscape.git
Cloning into 'inkscape'...
fatal: unable to access 'https://gitlab.com/inkscape/inkscape.git/': server certificate verification failed. CAfile: none CRLfile: none
$

Das Problem besteht schon länger (~Mitte Dezember :eek:), aber ich hab es in all der Zeit nicht hinbekommen, der Ursache auf die Schliche zu kommen. Ich hab ein ports-update laufen lassen, danach ging's nicht mehr. Was aber genau das ganze ausgelöst hat, weiß ich nicht.
Zuerst ist das Problem mit git 2.43.0 aufgetreten, besteht aber mit git 2.44.0 weiterhin (das ist aktuell installiert).

Was ich bisher versucht habe:
  • die Liste der vertrauenswürdigen Zertifikate neu gebaut (certctl rehash)
  • git, inklusive aller Abhängigkeiten, neu gebaut
  • die Ports in einem separaten Verzeichnis frisch heruntergeladen (das war im März...) und alles aktualisiert; bei der Aktion kam auch git 2.44.0 auf's System.

Die Zertifikate sehen für mich soweit gut aus, oder übersehe ich etwas?
Code:
$ openssl s_client --showcerts -servername git.freebsd.org -connect git.freebsd.org:443 < /dev/null 2>/dev/null
CONNECTED(00000003)
---
Certificate chain
 0 s:CN = git.freebsd.org
   i:C = US, O = Let's Encrypt, CN = E5
   a:PKEY: id-ecPublicKey, 256 (bit); sigalg: ecdsa-with-SHA384
   v:NotBefore: Aug 24 20:20:43 2024 GMT; NotAfter: Nov 22 20:20:42 2024 GMT
-----BEGIN CERTIFICATE-----
MIIDfTCCAwSgAwIBAgISA+BeXE1aimYNyIdDOW1+EIspMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NTAeFw0yNDA4MjQyMDIwNDNaFw0yNDExMjIyMDIwNDJaMBoxGDAWBgNVBAMTD2dp
dC5mcmVlYnNkLm9yZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBeP6sikj16W
RbE9ZRzIbuT2xYWfUGyBLpcjCQPVunnennLzyYvnXG9YaCQ7Q3AhJO1WjkFRO2ZH
Jfg9iDOkCZmjggIQMIICDDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYwFAYIKwYB
BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFKazCDeDerBx
Qb1mGLo7xscqTtO4MB8GA1UdIwQYMBaAFJ8rX888IU+dBLftKyzExnCL0tcNMFUG
CCsGAQUFBwEBBEkwRzAhBggrBgEFBQcwAYYVaHR1cDovL2U1Lm8ubGVuY3Iub3Jn
MCIGCCsGAQUFBzAChhZodHRwOi8vZTUuaS5sZW5jci5vcmcvMBoGA1UdEQQTMBGC
D2dpdC5mcmVlYnNkLm9yZzATBgNVHSAEDDAKMAgGBmeBDAECATCCAQMGCisGAQQB
1nkCBAIEgfQEgfEA7wB1ABmYEHEJ8NZSLjCA0p4/ZLuDbijM+Q9Sju7fzko/FrTK
AAABkYZB8DkAAAQDAEYwRAIgFHXO6ORYKJ/VcTRqQ0Tq00gpGdfmA39+sLyWAD1Z
gPICID2yym3Ak3ecNaJFRs1ezzEL92oIR7RNGPbEvLyvnR6dAHYA7s3QZNXbGs7F
XLedtM0TojKHRny87N7DUUhZRnEftZsAAAGRhkHwIwAABAMARzBFAiEA2sPxc0jJ
9XTXYgnyNY5+8Pw5DixnjoU/nOFHpyWnrOMCIE/QGyWtezX1otN+y4+mjxYNowbj
b6G91ewBCiMc+diPMAoGCCqGSM49BAMDA2cAMGQCMFxQ70L5ecry8NNazfjWyWyZ
olKgjqKjtsISAt/1DTOHfUoIe8Rf4J5e3c431oWfHAIwdxs4RdK+NunF4xoysYHj
4bazw+WgqUx1UJI62+iHRWPtLtA1ZtxHzNFW0oZHaHXx
-----END CERTIFICATE-----
 1 s:C = US, O = Let's Encrypt, CN = E5
   i:C = US, O = Internet Security Research Group, CN = ISRG Root X1
   a:PKEY: id-ecPublicKey, 384 (bit); sigalg: RSA-SHA256
   v:NotBefore: Mar 13 00:00:00 2024 GMT; NotAfter: Mar 12 23:59:59 2027 GMT
-----BEGIN CERTIFICATE-----
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK
a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO
VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw
i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C
2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+
bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG
6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV
XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO
koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq
cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI
E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e
K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
VQD9F6Na/+zmXCc=
-----END CERTIFICATE-----
---
Server certificate
subject=CN = git.freebsd.org
issuer=C = US, O = Let's Encrypt, CN = E5
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: ECDSA
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 2392 bytes and written 401 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 256 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
$
Die Resultate für github.com und gitlab.com sind vergleichbar, kann ich aber gerne auch noch teilen falls gewünscht.

Wie gesagt, mir ist nicht klar, wie das ganze zustande kam. Im Internet habe ich nur diesen Blogeintrag gefunden. Der passt zwar von der Problembeschreibung, aber liefert leider keine für mich praktikable Lösung mit (ich habe die Serverzertifikate nicht unter Kontrolle).

Hat jemand von euch eine Idee, wie ich das lösen kann? Vielen Dank schonmal im Voraus.
 
Code:
openssl s_client --showcerts -servername git.freebsd.org -connect git.freebsd.org:443
CONNECTED(00000003)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = E5
verify return:1
depth=0 CN = git.freebsd.org
verify return:1
---
Certificate chain
 0 s:CN = git.freebsd.org
   i:C = US, O = Let's Encrypt, CN = E5
   a:PKEY: id-ecPublicKey, 256 (bit); sigalg: ecdsa-with-SHA384
   v:NotBefore: Aug 24 20:20:43 2024 GMT; NotAfter: Nov 22 20:20:42 2024 GMT
-----BEGIN CERTIFICATE-----
MIIDfTCCAwSgAwIBAgISA+BeXE1aimYNyIdDOW1+EIspMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NTAeFw0yNDA4MjQyMDIwNDNaFw0yNDExMjIyMDIwNDJaMBoxGDAWBgNVBAMTD2dp
dC5mcmVlYnNkLm9yZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBeP6sikj16W
RbE9ZRzIbuT2xYWfUGyBLpcjCQPVunnennLzyYvnXG9YaCQ7Q3AhJO1WjkFRO2ZH
Jfg9iDOkCZmjggIQMIICDDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYwFAYIKwYB
BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFKazCDeDerBx
Qb1mGLo7xscqTtO4MB8GA1UdIwQYMBaAFJ8rX888IU+dBLftKyzExnCL0tcNMFUG
CCsGAQUFBwEBBEkwRzAhBggrBgEFBQcwAYYVaHR0cDovL2U1Lm8ubGVuY3Iub3Jn
MCIGCCsGAQUFBzAChhZodHRwOi8vZTUuaS5sZW5jci5vcmcvMBoGA1UdEQQTMBGC
D2dpdC5mcmVlYnNkLm9yZzATBgNVHSAEDDAKMAgGBmeBDAECATCCAQMGCisGAQQB
1nkCBAIEgfQEgfEA7wB1ABmYEHEJ8NZSLjCA0p4/ZLuDbijM+Q9Sju7fzko/FrTK
AAABkYZB8DkAAAQDAEYwRAIgFHXO6ORYKJ/VcTRqQ0Tq00gpGdfmA39+sLyWAD1Z
gPICID2yym3Ak3ecNaJFRs1ezzEL92oIR7RNGPbEvLyvnR6dAHYA7s3QZNXbGs7F
XLedtM0TojKHRny87N7DUUhZRnEftZsAAAGRhkHwIwAABAMARzBFAiEA2sPxc0jJ
9XTXYgnyNY5+8Pw5DixnjoU/nOFHpyWnrOMCIE/QGyWtezX1otN+y4+mjxYNowbj
b6G91ewBCiMc+diPMAoGCCqGSM49BAMDA2cAMGQCMFxQ70L5ecry8NNazfjWyWyZ
olKgjqKjtsISAt/1DTOHfUoIe8Rf4J5e3c431oWfHAIwdxs4RdK+NunF4xoysYHj
4bazw+WgqUx1UJI62+iHRWPtLtA1ZtxHzNFW0oZHaHXx
-----END CERTIFICATE-----
 1 s:C = US, O = Let's Encrypt, CN = E5
   i:C = US, O = Internet Security Research Group, CN = ISRG Root X1
   a:PKEY: id-ecPublicKey, 384 (bit); sigalg: RSA-SHA256
   v:NotBefore: Mar 13 00:00:00 2024 GMT; NotAfter: Mar 12 23:59:59 2027 GMT
-----BEGIN CERTIFICATE-----
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK
a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO
VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw
i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C
2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+
bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG
6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV
XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO
koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq
cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI
E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e
K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
VQD9F6Na/+zmXCc=
-----END CERTIFICATE-----
---
Server certificate
subject=CN = git.freebsd.org
issuer=C = US, O = Let's Encrypt, CN = E5
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: ECDSA
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 2392 bytes and written 401 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 256 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---

Mal hart geraten: https://forums.freebsd.org/threads/...-https-download-freebsd-org.78082/post-487319

...und obligatorisch: stimmt die Uhrzeit auf dem System?
 
Also an den Servercerts wirds nicht liegen, wenn alle Server nicht funktionieren. Gehen andere CLI Tools gegen https Server? wget/curl/openssl s_client?
 
Mal hart geraten: https://forums.freebsd.org/threads/...-https-download-freebsd-org.78082/post-487319

...und obligatorisch: stimmt die Uhrzeit auf dem System?
Die Uhrzeit stimmt, sowohl im BIOS als auch im System.

Also an den Servercerts wirds nicht liegen, wenn alle Server nicht funktionieren. Gehen andere CLI Tools gegen https Server? wget/curl/openssl s_client?
wget und fetch funktionieren tadellos, openssl s_client ebenfalls (siehe oben). curl schlägt fehlt:
Code:
$ curl https://www.bsdforen.de
curl: (60) server certificate verification failed. CAfile: none CRLfile: none
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
$
 
Hi !

Hatte auch mal ein git&certificates Problem ...

Ist "security/ca_root_nss" bei dir installiert ?

Hat bei mir damals den Fehler beseitigt !

Gruss
 
Ich würde mal folgende Dateien/Symlinks checken:
Code:
security/ca_root_nss

...

This package installs symlinks to support root certificate discovery
for software that either uses other cryptographic libraries than
OpenSSL, or use OpenSSL but do not follow recommended practice.

If you prefer to do this manually, replace the following symlinks with
either an empty file or your site-local certificate bundle.

  * /etc/ssl/cert.pem
  * /usr/local/etc/ssl/cert.pem
  * /usr/local/openssl/cert.pem

Edit:
Achja und falls du curl selbst gebaut hast, prüfe mal die Options:
Code:
...
====> SSL protocol support: you can only select none or one of them
     GNUTLS=off: SSL/TLS support via GnuTLS
     OPENSSL=on: SSL/TLS support via OpenSSL
     WOLFSSL=off: SSL/TLS support via wolfSSL
bzw.
Code:
$ curl-config --configure
... '--enable-openssl-auto-load-config' ... '--with-ca-fallback' ...
Das kommt zumindest bei mir raus
 
Zuletzt bearbeitet:
Zu ca_root_nss: an der Standardinstallation hab ich nie was geändert. Die Option ETCSYMLINK=on ist gesetzt.
Bei mir zeigt nur /etc/ssl/cert.pem auf eine andere Datei:
Code:
$ ls -l /etc/ssl/cert.pem           
lrwxr-xr-x  1 root wheel 43 Sep 10 21:49 /etc/ssl/cert.pem -> ../../usr/local/share/certs/ca-root-nss.crt
$ ls -l /usr/local/etc/ssl/cert.pem 
-rw-r--r--  1 root wheel 746519 Sep 10 21:49 /usr/local/etc/ssl/cert.pem
$ ls -l /usr/local/openssl/cert.pem 
-rw-r--r--  1 root wheel 746519 Sep 10 21:49 /usr/local/openssl/cert.pem
$

Zu curl: Bei mir ist GNUTLS=on gesetzt. Die Optionen sehen u.a. so aus:
Code:
$ curl-config --configure                
 [...] '--enable-openssl-auto-load-config' [...] '--without-ca-bundle' '--without-ca-path' [...] '--with-gnutls' '--with-ca-fallback' [...]

Ich hab jetzt spaßeshalber mal curl mit OPENSSL=on gebaut und jetzt funktioniert alles wieder. Mich würde nur interessieren, warum? Danke für den Fingerzeig in die richtige Richtung!
 
Hm, ich bin da jetzt nicht so gut drin.
Wenn ich das Makefile zu security/gnutls richtig lese, benutzt es als Default --with-default-trust-store-dir=/etc/ssl/certs.

Existiert der Ordner bei dir?
Sind dort Zertifikate vorhanden?
Falls es Symlinks sind, wo zeigen die hin?
 
Ja, das Verzeichnis existiert und es sind Zertifikate vorhanden, die aber alle auf Einträge in /usr/share/certs/trusted/ zeigen.

Wie gesagt: curl mit OpenSSL anstelle GNUTLS tut wie gewünscht...
 
Jo also das curl/git nicht funktionierten, hängt mit gnutls zusammen und das es wohl andere Zertifikate benutzt, aber warum es nicht funktioniert, ist eine gute Frage.

Hab es gerade bei mir mal geprüft und konnte beide CA's finden:
Code:
# Github
$ lsd /etc/ssl/certs/ | grep USER
lrwxr-xr-x  1 root wheel   74B 2024-09-07 22:40:26 f30dd6ad.0 -> ../../../usr/share/certs/trusted/USERTrust_ECC_Certification_Authority.pem
lrwxr-xr-x  1 root wheel   74B 2024-09-07 22:40:26 fc5a8f99.0 -> ../../../usr/share/certs/trusted/USERTrust_RSA_Certification_Authority.pem

# Lets Encrypt
$ lsd /etc/ssl/certs/ | grep ISR
lrwxr-xr-x  1 root wheel   49B 2024-09-07 22:40:24 0b9bc432.0 -> ../../../usr/share/certs/trusted/ISRG_Root_X2.pem
lrwxr-xr-x  1 root wheel   49B 2024-09-07 22:40:24 4042bcee.0 -> ../../../usr/share/certs/trusted/ISRG_Root_X1.pem
 
Zurück
Oben