5 Kasım 2012 Pazartesi

Debian'a JDK 7 yüklemenin yolu

Bu yazıda Linux işletim sisteminize el yordamıyla herhangi bir runtime yükleme ve update-alternatives komutuyla sistem varsayılanı olarak ayarlamayı anlatacağım; özellikle resmi depolarda henüz bulunmamasından dolayı Debian'a JDK 7 yükleme örneğiyle anlatıyorum. Genelleştirip başka ihtiyaçlarınıza da uyarlayabilirsiniz.

Öncelikle wget kullanarak sıkıştırılmış tar dosyayı Oracle'ın sitesinden yükleyelim ve uygun klasöre açalım. Henüz JDK 7 için Debian depolarında resmi paket yok, bu yüzden paket yöneticisini (apt-get komutunu) kullanamıyoruz.

wget http://download.oracle.com/otn-pub/java/jdk/7u9-b05/jdk-7u9-linux-x64.tar.gz
tar zxvf jdk-7u9-linux-x64.tar.gz -C /usr/lib64/jvm/

Verdiğim link 64-bit Linux için son JDK'yı gösteriyor. Bu işe yaramazsa doğrusunu Oracle'ın sayfasına gidip bulabilirsiniz; her halükarda son versiyonunu tespit etmek için:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Şimdi istediğimiz JDK'yı indirip doğru bir klasöre açtığımıza göre update-altenatives marifetiyle sistem varsayılanı olarak ayarlayalım.

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_09/bin/java 1065
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_09/bin/javac 1065

1065 rakamı verilen önceliği ifade ediyor.

İşlemi kontrol etmek için –config parametresini kullanabilirsiniz.

update-alternatives --config java

Bu komutu girdiğinizde eğer önceden yüklenmiş bir Java'nız da vardıysa şuna benzer birkaç satır görmelisiniz, eğer ilk java ise alternatifi olmadığını bildirecektir:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/jdk1.7.0_09/bin/java          1065      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/jdk1.7.0_09/bin/java          1065      manual mode

Verdiğimiz 1065 rakamı 1061 den yüksek olduğundan kurduğumuz java otomatik olarak seçiliyor. Şimdi  artık yeni alternatifin etkinleştiğini görebiliriz.

java -version

Çıktısı:

java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

Kolay gelsin...

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