error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed, eski OpenSSL 1.0.x sürümlerinde istemcinin sunucu sertifikasını doğrulayamadığında verdiği genel hatadır. Gerçek sebep ayrı bir "verify error" kodunda saklıdır; php, curl, python veya git gibi araçlar bu ayrıntıyı bazen göstermez.
Gerçek nedeni bulun
openssl s_client -connect alanadi.com:443 -servername alanadi.com -CAfile /etc/ssl/certs/ca-certificates.crt
Çıktının sonundaki Verify return code değerine bakın:
- 10: sertifikanın süresi dolmuş.
- 18 / 19: kendinden imzalı sertifika ya da zincirde kendinden imzalı kök güvenilmiyor.
- 20 / 21: ara sertifika eksik, zincir tamamlanamıyor.
- 62: ana bilgisayar adı sertifikayla eşleşmiyor (hostname mismatch).
Kodlara göre çözüm
- Süre dolmuş: Sertifikayı yenileyin. İstemci saatinin doğru olduğunu da kontrol edin.
- Ara sertifika eksik: Sunucuda tam zinciri sunun.
- Güvenilmeyen kök: İstemcide eski CA paketi olabilir; işletim sistemi CA paketini güncelleyin (
update-ca-certificatesveya eşdeğeri). Eski sistemlerde yeni kök sertifikalar hiç bulunmayabilir. - Ad uyuşmazlığı: Bağlandığınız adın sertifikanın SAN listesinde olduğundan emin olun.
- Kurum proxy'si: TLS denetimi yapan proxy'nin kök sertifikasını istemciye ekleyin.
Yapmayın
curl -k veya verify=False gibi bayraklar doğrulamayı kapatır; teşhis sırasında kısa süreli denemek dışında bırakmayın. Eski OpenSSL sürümü TLS 1.2 ve yeni CA zincirlerinde sorun çıkarabilir; yazılımı güncellemek kalıcı çözümdür.
Sunucu tarafını SSL denetleme aracıyla inceleyin, eksik zincir ise kurulum talimatları için Türkçe teknik destek ekibimize yazabilirsiniz.
Ek ipuçları
PHP'de openssl.cafile ve curl.cainfo ayarları doğru CA paketini göstermelidir; Windows'ta XAMPP gibi ortamlarda güncel bir cacert.pem dosyası indirilip php.ini'de belirtilerek bu hata çoğu zaman giderilir. OpenSSL sürümünüz 1.0.x ise güncellemeyi ciddi biçimde değerlendirin.