SSL Sertifikası

Python certifi Bundle Güncelleme

Python requests'te CERTIFICATE_VERIFY_FAILED alıyorsanız certifi paketini güncellemek çoğu zaman yeter. Kurumsal CA ve macOS çözümleriyle birlikte.

Python'un requests kütüphanesi, sertifika doğrulaması için sistem deposunu değil certifi paketinin CA paketini kullanır. Bu paket eskiyse veya farklı bir ortamda tanımsızsa, şu hata oluşur:

requests.exceptions.SSLError: HTTPSConnectionPool(...):
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate

Olası nedenler

  • Uzun süredir güncellenmemiş certifi sürümü; yeni bir kök CA pakette yok.
  • Sanal ortamda (venv) eski bir paket kalmış.
  • macOS'ta python.org kurulumunun sertifikaları yüklenmemiş.
  • Kurumsal proxy kendi kök sertifikasıyla trafiği yeniden imzalıyor.
  • Sunucu ara sertifikayı göndermiyor.

Teşhis

Hangi paketin kullanıldığını görün:

python -c "import certifi; print(certifi.where(), certifi.__version__)"

Çözüm adımları

  1. Paketi güncelleyin:
python -m pip install --upgrade certifi requests urllib3
  1. macOS'ta python.org kurulumunda Uygulamalar klasöründeki Python dizininde bulunan Install Certificates.command dosyasını çalıştırın.
  2. Kurumsal CA kullanılıyorsa kendi paketinizi tanıtın:
export REQUESTS_CA_BUNDLE=/etc/ssl/kurum-ca.pem
export SSL_CERT_FILE=/etc/ssl/kurum-ca.pem

Kodda ise requests.get(url, verify="/etc/ssl/kurum-ca.pem") biçiminde tek bir çağrı için de verebilirsiniz.

  1. Sunucu zinciri eksikse sorunu sunucu tarafında düzeltin; istemciyi değiştirmek yalnızca belirtiyi örter.

Kaçınılacak yol

verify=False kullanmak hatayı susturur ama bağlantının kimliğini doğrulamaz; üretimde kullanmayın. Sunucunuzun zinciri sorunluysa SSL kontrol aracı eksikleri gösterir, yeni bir sertifika gerekiyorsa SSL sertifikaları sayfasına bakabilirsiniz.

Bu makale faydalı oldu mu?

Makale Ara

Sertifika Doğrulama Hataları

Yardıma mı İhtiyacınız Var?

Aradığınızı bulamadıysanız destek ekibimiz size yardımcı olabilir.

Destek Talebi Aç