SSL Sertifikası

Java SSL: SSLHandshakeException

SSLHandshakeException farklı nedenlerle çıkar. Hata iletisinden nedene ulaşmanızı sağlayan pratik bir eşleştirme tablosu ve çözümler.

javax.net.ssl.SSLHandshakeException tek bir sorun değil, bir hata ailesidir. Önemli olan, istisnanın ardından gelen ayrıntı iletisidir; çünkü her ileti farklı bir katmana işaret eder.

İletiden nedene

İletiOlası neden
PKIX path building failedGüven zinciri kurulamadı; kök/ara sertifika eksik
No subject alternative names presentSertifika, bağlanılan ana bilgisayar adını kapsamıyor
Received fatal alert: handshake_failureOrtak protokol veya cipher suite yok
No appropriate protocolİstemcide TLS sürümleri devre dışı bırakılmış
Remote host terminated the handshakeSunucu bağlantıyı erken kapattı (güvenlik duvarı, protokol uyumsuzluğu)
certificate_expiredSertifika veya zincirdeki bir halka süresi dolmuş

Teşhis adımları

  1. Bağlantıyı Java dışında deneyin:
    openssl s_client -connect ornek.com:443 -servername ornek.com
  2. Java'da el sıkışma günlüğünü açın: -Djavax.net.debug=ssl:handshake.
  3. Sunucunun desteklediği TLS sürümlerini ve cipher'ları karşılaştırın; istemci yalnızca TLS 1.0/1.1 sunuyorsa güncel sunucular reddeder.
  4. Protokolü zorlayarak deneyin:
    java -Djdk.tls.client.protocols=TLSv1.2 -jar uygulama.jar
  5. Ana bilgisayar adı uyuşmazlığında sertifikanın SAN alanını kontrol edin; adres IP ile çağrılıyorsa sertifikada IP SAN yoksa hata kaçınılmazdır.

Önleme

JDK'yı güncel tutun, java.security dosyasındaki jdk.tls.disabledAlgorithms ayarını gevşetmek yerine sunucuyu modernleştirin ve uygulama yapılandırmasında sertifika doğrulamasını kapatan "güven her şeyi" çözümlerinden kaçının; bunlar sorunu gizler, güvenliği ortadan kaldırır. Adı ve zinciri hızlıca kontrol etmek için SSL denetleme aracından, genel kılavuz için bilgi bankasından yararlanın.

Ek ipuçları

  • İstemci ve sunucu arasında bir yük dengeleyici varsa hatayı veren uç o cihazdır; doğrudan arka uca bağlanarak karşılaştırın.
  • Java sürümünüz eskiyse TLS 1.2 varsayılan olarak kapalı olabilir; JDK'yı güncellemek en doğru çözümdür.
  • Günlükte görünen ClientHello içindeki sürüm ve cipher listesini sunucu ayarlarıyla yan yana koyarak ortak nokta olup olmadığına bakın.

Hata yalnızca belirli bir sunucuda çıkıyorsa o sunucunun yapılandırması, her yerde çıkıyorsa istemci ortamı şüphelidir; bu basit ayrım teşhis süresini kısaltır.

Özet: önce iletiyi okuyun, sonra ilgili katmanı (zincir, ad, protokol, cipher) tek tek eleyin.

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ç