Jar İmzalama (Signed Jar)

Applet ve JWS uygulamalarında kullanıcının bilgisayarında güvenlik nedeniyle, uygulamanızın güvenli çalıştığını doğrulamak ve bu tip izinleri alabilmek için jar dosyanızı imzalamanız gerekir. Böylece kullanıcının onaylaması ile bilgisayarında bulunan dosyalara,portlara erişebilirsiniz.

Jar dosyası oluştuktan sonra yapmamız gereken bu jar dosyasını imzalamaktır. İmzalamadan önce kendi imzamızı oluşturmamız gerekiyor. Bunu yapmak için bir tane komut istemcisi açıyoruz. Komut istemcisinde Jar dosyasının bulunduğu dizine gidiyoruz. Daha sonra o dizinde iken aşağıdaki komutu çalıştırarak anahtar dosyamızı oluşturuyoruz.

keytool -genkey -keystore notdefteri.key -alias NotDefteri -validity 365

Komut sonucu yukarıdakine benzer bir pencere elde etmeniz gerekiyor. Bu komutun anlamı NotDefteri aliasina sahip ve 365 gün geçerli olan notdefteri.key anahtarını oluşturdur.

Anahtar dosyamızı sadece bir kere oluşturmamız yeter. Aynı anahtar dosyasını bütün projelerimizde kullanabiliriz. Ya da isterseniz her projeniz için ayrı ayrı anahtar dosyaları oluşturabilirsiniz.

Daha sonra bu anahtar dosyasını kullanarak jar dosyamızı imzalayalım.

jarsigner -keystore notdefteri.key -storepass notdefteri notdefteri.jar NotDefteri
jarsigner -verify notdefteri.jar

İlk satırda notdefteri.jar dosyasını notdefteri.key anahtarıyla tanımladığımız şifreyi ve anahtar aliasını girerek imzalıyoruz. Daha sonra jar dosyasını doğruluyoruz.

Komutlar sonucu yukarıdakine benzer bir pencere elde etmeniz gerekiyor.

Bu konunun neden gerektiği ve daha ayrıntılı bilgilere şu adresten ulaşabilirsiniz.

14 yorum:

Adsız dedi ki...

Ben anlattığınız gibi yaptım fakak key girin dediğinde klavye kilitleniyor hiçbirşey yazamıyorun. Neden kaynaklanıyor olabilir.

Tahir Emre Kalaycı dedi ki...

Merhaba, klavye kilitlenmesiyle daha önce hiç karşılaşmadım. Peki pencereyi kapatınca kilitlenme sürüyor mu? Bilgisayarı yeniden mi başlatıyorsunuz?

Adsız dedi ki...

Yok benim anlatmak istediğim jar dosyamı bin klasörünün içine atıyorum ve vermiş olduğunuz komutları çalıştırıyorum. Bana şifre soruyor komut satırında şifre yazmak istediğimde hiçbirşey yazamıyorum sanırım benim pcden kaynaklanıyor.

Birde ikinci bir sorum olcaktı arkadaşım sizin anlattığınız yöntemle kendi jarını imzaladı html çalışması olduğu için htmleyi çalıştırdığımızda java warning security uyarısı veriyor ve Run Cancel Diye iki tane buton çıkıyor karşımıza uygulamayı ancak run dediğimizde çalıştırabiliyoruz. Bunun nedeni ne olabilir. Teşekkürler.

Tahir Emre Kalaycı dedi ki...

Merhaba,

İlk konu için evet bilgisayarınızla ilgili olabilir. Başka makinelerde de sınayın isterseniz.

İkinci soruda da evet-hayır uyarısının çıkmasının nedeni imzaladığımız şekliyle kullanıcıya ilgili sertifikayı incelemesi ve onaylaması durumunda çalıştırmasıdır diye düşünüyorum. Sonuçta güvenilir olmayan bir sertifika olduğunu düşündüğü şeyleri kullanıcı çalıştırmayabilir. Sanırım bundan kaynaklanıyordur.

Adsız dedi ki...

jar dosyasını imzalamak bu run olayına çözüm olmuyor mu yada bu run uygulamasını kaldırmak için jar dosyasına ne yapmamız gerekir. Teşekkürler.

Tahir Emre Kalaycı dedi ki...

JAR dosyasını imzaladığınız sertifikayı kullanıcıların kendi bilgisayarlarında güvenli olarak işaretlemesi lazım, JAR dosyasına yapılabilecek bir şey var mı emin değilim.

Adsız dedi ki...

Ya bende çok sıkıcı oldum sürekli soru soruyorum ama ksura bakmayın. Bir sorum daha var imzalanmış bir jar dosyasını tekrar imzalamak mümkünmü? Böyle bir durumda son imzaladığımız sertifikamı ger,çerli olur. Teşekkürler

Tahir Emre Kalaycı dedi ki...

Önemli değil. Ben de elimden geldiğince yanıtlamaya çalışıyorum.

Sanırım, emin değilim, iki imza da geçerli olur. O yüzden önceki imzaları silmek gerekecektir. Konuyla ilgili iki bağlantı:

https://www.chemaxon.com/forum/viewpost7553.html

http://72.5.124.102/thread.jspa?messageID=1068054

Bunun yerine JAR dosyasını tekrar üretseniz ve sonrasında tekrar imzalasanız daha kolay olacaktır.

Bir de bu imzalamayla ilgili Eclipse'in JAR oluşturma menüsünde işleri kolaylaştırıcı bir şeyler olabilir, hiç denemediğim için emin olamıyorum.

Adsız dedi ki...

Şimdi size çok teşekkür ederim çok yardımcı oluyorsunuz. Ben pc'ye
jdk-6u18-windows-i586.exe diye bir development kit kurdum onun bin klasörünejar dosyamı attım. Ve komut satırından bin klasörüne ulaşıp verdiğiniz kodu uyguladım. Buraya kadar yaptığım bir yanlış var mı?

Tahir Emre Kalaycı dedi ki...

Merhaba,

Bir yanlış yok ama JAR dosyasını bin'e atmak yerine Java Path ayarlaması yapıp JAR'ı oluduğu dizinden çalıştırmak daha mantıklı olmalı. Bunun için Java Path ayarlama konusunu aratabilirsiniz. http://kodveus.blogspot.com/2006/04/altrlabilir-jar-dosyas-oluturma_07.html adresinde bahsetmiştim nasıl ayarlandığından.

İmzaladığınız JAR'ı tekrar imzalamak yerine tekrar JAR üretseniz olacaktır.

onur dedi ki...

dostum beimde klavye kilitlendi bir kaç bilgisayarda daha denedim çok acil bu imzalamayı yapmam lazım yardımcı olursan sevinirim.

byrodi dedi ki...

dostum bendede klavye kilitleniyor

kullandığım komutlar

cd..
cd..
cd C:\Program Files\Java\jdk1.6.0_23\bin keytool -genkey -keystore facebook.key -alias facebook -validity 365

girince ekran çıkıyor fakat hiçbişi yazamıyorum çok acil yapmam lazım yardımcı olursan sevinirim

T. E. Kalaycı dedi ki...

Merhaba,

Belki de şifre giriş ekranında şifreyi girince görmemeyi siz klavye kilitlenmesi olarak algılıyor olabilirsiniz. Şifreyi girdiğinizde şifre giriş kısmında girdiğiniz şifre görüntülenmiyor, giriş işlemini bitirince enter tuşuna bastığınızda şifre işleme koyuluyor.

Yok tam bir kilitlenme söz konusuysa Java sürümüyle, windowsla vb. bir nedenden dolayı olabilir sorun. Ubuntu işletim sisteminde Java'nın 1.6.0_22 sürümüyle öyle bir sorunla karşılaşmadım, az önce denedim. Doğrudan şifreyi soruyor, onu girdikten sonra bilgileri soruyor. Bundan sonrası beni aşıyor, başka bir makinede deneyin :)

ircdepo dedi ki...

merhaba ben islemleri yapıyorum ancak
'jarsigner' iç ya da dış komut, çalıştırılabilir
program ya da toplu iş dosyası olarak tanınmıyor.

seklin de bir uyari aliyorum nasil gecebilirim bu sorunu bu arada biraz arastirma yapıp path a java dizinini ekledim