pip ile paket kurarken SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate')) görüyorsanız pip'in kullandığı CA paketi, PyPI veya indeks sunucusunun zincirini doğrulayamıyor demektir.
Nedenler
- Kurumsal proxy veya güvenlik duvarı TLS trafiğini kendi CA'sıyla yeniden imzalıyor.
- Özel paket indeksi (Nexus, Artifactory vb.) iç CA sertifikası kullanıyor.
- Eski Python veya eski
certifipaketi güncel kökleri içermiyor. - Makine saati yanlış.
Adım adım çözüm
- Saat ve tarihi doğrulayın, ardından pip ve certifi'yi güncellemeyi deneyin:
python -m pip install --upgrade pip certifi - Kurumsal CA'nızı PEM olarak alın ve pip'e tanıtın:
pip config set global.cert /etc/ssl/kurum-ca.pem
pip config list
# Tek seferlik kullanım
pip install requests --cert /etc/ssl/kurum-ca.pem
# Ortam değişkeni ile
export PIP_CERT=/etc/ssl/kurum-ca.pem
export REQUESTS_CA_BUNDLE=/etc/ssl/kurum-ca.pem
Windows'ta aynı ayar %APPDATA%\pip\pip.ini dosyasında [global] altına cert = C:\sertifikalar\kurum-ca.pem olarak yazılabilir.
İşletim sistemi deposunu kullanmak
Kurumsal CA zaten sistem güven deposundaysa, pip'in bunu kullanmasını sağlayan yardımcı paketlerden (ör. truststore tabanlı çözümler) yararlanabilirsiniz; sürümünüzün dokümantasyonunu kontrol edin.
Kaçınılması gereken seçenek
--trusted-host pypi.org --trusted-host files.pythonhosted.org doğrulamayı o adresler için kapatır. Ağ içinde geçici ve bilinçli kullanım dışında önermiyoruz, çünkü paket bütünlüğü riske girer.
Özet: Asıl çözüm, doğru CA paketini pip'e göstermektir. Kendi sunucunuzdaki indeks için SSL sertifikaları bölümüne, zincir testi için SSL Checker aracına göz atabilirsiniz.