28 Mayıs 2012 Pazartesi

Java ve SSL Güvenilmeyen Sertifika

SSL sertifikası güvenilmemiş olan bir sunucuya erişmek istediğinizde aşağıdaki hatalardan (orj. exception) biri ile karşılaşabilirsiniz:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


Bu hatalar sertifikanızın geçerliliğinin kullandığınız Java runtime tarafından doğrulanamamasından kaynaklanıyor. Ağ tarayıcıları benzer durum ile karşılaşıldığında çoğu kere uyarı vermekle beraber, size sertifikaya güvenip devam etme veya güvenilir listesine ekleme seçenekleri de sunarlar. Bizim durumumuzda devam edebilmek için keytool aracını kullanarak Javanın keystore una bu sertifikayı güvenilir olarak eklememiz icab ediyor.


keytool aracı Java JDK nızın bin klasöründedir. keytool u bulduktan sonra şu adımları izleyin:

  • Sertifikayı local bir yere karşıdan yükleyin.
  • keystore a şu parametreler ile sertifikayı ekleyin:
    keytool -keystore ..\jre\lib\security\cacerts -import -alias <tanım_girin> -file c:\<dosya_yolu>\sertifika.crt -trustcacerts
    veya
    keytool -keystore ../jre/lib/security/cacerts -import -alias <tanım_girin> -file ~/<dosya_yolu>/sertifika.crt -trustcacerts
Varsayılan keystore şifresi changeit dir.

Adımları doğru olarak tamamladıysanız sizi şöyle tasdik edecektir: "Certificate was added to keystore."


Bazı ipuçları:

Keystore daki tüm sertifikaları listelemek için:
keytool -list -keystore ..\jre\lib\security\cacerts
Keystore dan sertifika silmek için:
keytool -delete -alias certalias -keystore ..\jre\lib\security\cacerts