Git, HTTPS üzerinden klonlama veya push sırasında sunucu sertifikasını doğrulayamazsa şu hatayı verir:
fatal: unable to access 'https://git.ornek.com/proje.git/':
SSL certificate problem: unable to get local issuer certificate
Benzer bir mesaj self signed certificate in certificate chain biçiminde de görülür.
Sık nedenler
- Kurum içi Git sunucusu (GitLab, Gitea vb.) özel CA ile imzalanmış sertifika kullanıyor.
- Sunucu ara sertifikayı göndermiyor.
- Kurumsal proxy HTTPS trafiğini kendi sertifikasıyla yeniden imzalıyor.
- Git'in kullandığı CA paketi eski veya yanlış konumu işaret ediyor.
- Windows'ta farklı bir SSL arka ucu (OpenSSL / Schannel) kullanılıyor.
Teşhis
GIT_CURL_VERBOSE=1 git ls-remote https://git.ornek.com/proje.git
git config --get http.sslCAInfo
git config --get http.sslBackend
Ayrıca sunucunun sertifika zincirini openssl s_client -connect git.ornek.com:443 -showcerts ile inceleyin.
Çözüm
- Kurum kök sertifikasını bir dosyaya kaydedip Git'e tanıtın. Yalnızca ilgili sunucu için:
git config --global http."https://git.ornek.com/".sslCAInfo "C:/sertifikalar/kurum-ca.pem"
- Windows'ta Windows sertifika deposunu kullanmak için:
git config --global http.sslBackend schannel
Bu durumda Windows'a eklenmiş kurum kökleri Git tarafından da kullanılır.
- Sunucu zinciri eksikse sorunu sunucuda, ara sertifikayı ekleyerek düzeltin.
- Git ve işletim sistemi CA paketini güncelleyin.
Kaçınılacak ayar
git config --global http.sslVerify false tüm doğrulamayı kapatır; kod depolarınızı ortadaki saldırgana açar. Yalnızca çok kısa, izole testlerde düşünülebilir ve sonra geri alınmalıdır. Kendi sunucunuzun sertifikasını SSL kontrol aracıyla doğrulayabilir, herkese açık bir Git sunucusu için SSL sertifikaları arasından seçim yapabilirsiniz.