SSL Sertifikası

cURL SSL: certificate problem unable to get local issuer

cURL 'unable to get local issuer certificate' (hata 60) için nedenler ve çözümler: CA paketi, eksik ara sertifika, --cacert ve PHP ayarı.

curl: (60) SSL certificate problem: unable to get local issuer certificate hatası, cURL'ün sunucu sertifikasının vericisini (issuer) yerel CA paketinde bulamadığını bildirir. Sebep ya istemci makinedeki CA paketi ya da sunucunun eksik zincir göndermesidir.

Nedeni ayırt etme

  1. Aynı adrese başka bir makineden veya tarayıcıdan sorunsuz erişiliyorsa sorun büyük olasılıkla yerel CA paketindedir.
  2. Hiçbir istemci güvenmiyorsa sunucu ara sertifikayı göndermiyor olabilir. Kontrol için:
    curl -v https://ornek.com
    openssl s_client -connect ornek.com:443 -servername ornek.com -showcerts
  3. Çıktıda yalnızca bir sertifika varsa zincir eksiktir.

Çözümler

  • Sunucu tarafı: Sertifikaya ara sertifikaları ekleyip (fullchain) web sunucusunu yeniden yükleyin. Kalıcı ve doğru çözüm budur.
  • Linux istemci: CA paketini güncelleyin (update-ca-certificates veya dağıtıma uygun paket: ca-certificates).
  • Özel CA: Kök sertifikayı açıkça verin:
    curl --cacert kok-ca.pem https://ornek.com
  • Ortam değişkeni: CURL_CA_BUNDLE veya SSL_CERT_FILE ile paket dosyasını gösterin.
  • PHP cURL: php.ini içinde CA paketi yolunu tanımlayın:
    curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
    openssl.cafile = "C:\xampp\php\extras\ssl\cacert.pem"

Uyarı ve önleme

curl -k (veya --insecure) doğrulamayı atlar; teşhis amaçlı kısa testlerde işe yarar, üretim betiklerinde bırakılmamalıdır. Eksik zincir sorunlarını önlemek için sertifikayı yayına aldıktan sonra SSL denetleme aracıyla tam zincir kontrolü yapın. Yeni sertifika gerekiyorsa SSL sertifikaları sayfasına bakabilirsiniz.

Ek notlar

  • Windows'ta cURL'ün kullandığı arka uca göre (Schannel veya OpenSSL) sistem deposu ya da CA dosyası kullanılır; curl -V ile hangisinin kullanıldığına bakın.
  • PHP'de CA dosyasını güncel tutmak için dosyayı düzenli olarak yenileyin; eski dosya yeni CA'ları tanımaz.
  • Hata yalnızca belirli bir siteye özgüyse, o sitenin zincirini öncelikle şüpheli sayın.

Sonuç olarak yerel bir betikte çalışan çözüm her zaman sunucudaki eksikliği kapatmaz; ikisini ayrı ayrı doğrulayın.

Özet: hata 60 bir güven sorunudur; ara sertifika eksikliği ve eski CA paketi en yaygın iki nedendir.

Bu makale faydalı oldu mu?

Makale Ara

Sunucu SSL Hataları

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

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

Destek Talebi Aç