error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure mesajı, karşı tarafın "ortak bir protokol veya şifre paketi bulamadım" anlamında handshake_failure uyarısı gönderdiğini gösterir. Adındaki "sslv3" eski bir etikettir; bugün TLS 1.2 bağlantılarında da aynı ifade çıkar.
En olası nedenler
- Sunucu yalnızca TLS 1.2+ kabul ediyor, istemci eski protokolle konuşuyor (veya tersi).
- Ortak şifre paketi yok; ör. sunucuda yalnızca ECDSA sertifikası var, istemci RSA bekliyor.
- İstemci SNI göndermiyor ve sunucu yanlış sertifikayı seçiyor.
- Sunucu istemci sertifikası (mTLS) istiyor ama istemci göndermiyor.
- Bağlantı bir CDN/WAF tarafından kesiliyor.
Teşhis adımları
- Protokolleri tek tek deneyin:
openssl s_client -connect alanadi.com:443 -servername alanadi.com -tls1_2 openssl s_client -connect alanadi.com:443 -servername alanadi.com -tls1_3 - Şifre paketini sınayın:
openssl s_client -connect alanadi.com:443 -servername alanadi.com -cipher 'ECDHE-RSA-AES128-GCM-SHA256' - SNI'siz deneyip farkı görün; yalnızca
-servernameolan bağlantı başarılıysa istemciniz SNI göndermiyordur (çok eski kütüphane). - Sunucu loguna bakın: Nginx için
error.log, Apache içinErrorLogseviyesini geçici olarakinfo'ya çekin. - İstemci kütüphanesini ve OpenSSL sürümünü güncelleyin.
Kalıcı çözüm
Sunucuda modern protokolleri (TLS 1.2 ve 1.3) ve yaygın ECDHE-GCM paketlerini açık tutun; eski istemciler için gereksiz gevşetme yapmak yerine istemciyi güncelleyin. Sertifika türünü seçerken SSL seçim rehberinden yararlanın; ayar sonrasında SSL denetleme aracını çalıştırın.
Ek ipuçları
Sorunun yalnızca bir istemci sınıfında görülmesi, sunucu yapılandırmasının genel olarak doğru olduğunu düşündürür; çok eski Android, eski Java veya eski Windows sürümleri bu grupta sayılır. Bu istemciler için sunucuyu zayıflatmak yerine, risk ve gereklilik dengesine göre ayrı bir uç noktada çözüm üretmeyi ya da istemciyi güncellemeyi düşünün.