Java'da .jar dosyalarını imzalamak için JDK'yla gelen jarsigner aracı kullanılır. Kod imzalama sertifikanız bir PKCS#12 (.p12/.pfx) dosyasında veya bir donanım token'ında durur; jarsigner bu anahtar deposuna erişerek JAR içindeki dosyaların özetlerini imzalar.
Ön koşullar
- JDK kurulu olmalı (
jarsigner -helpile kontrol edin). - Kod imzalama sertifikası ve özel anahtar içeren anahtar deposu.
- Zaman damgası sunucusu adresi.
Anahtar deposunu inceleme
keytool -list -v -keystore anahtar.p12 -storetype PKCS12
Çıktıdaki alias değerini imzalama komutunda kullanacaksınız.
İmzalama
jarsigner -keystore anahtar.p12 -storetype PKCS12 \
-tsa http://time.certum.pl \
-digestalg SHA-256 -sigalg SHA256withRSA \
uygulama.jar alias_adi
Parola komut satırına yazılmamalıdır; jarsigner size parolayı sorar. Donanım token'ı için -storetype PKCS11 ve bir PKCS#11 yapılandırma dosyası (-providerClass sun.security.pkcs11.SunPKCS11 -providerArg token.cfg) gerekir.
Doğrulama
jarsigner -verify -verbose -certs uygulama.jar
Başarılı çıktıda "jar verified." ifadesi görünür.
Sık hatalar
- "no key found / alias not found": alias adı yanlış veya büyük-küçük harf farklı.
- "unable to connect to TSA": ağ veya proxy sorunu;
-J-Dhttps.proxyHostgibi JVM proxy ayarlarını kontrol edin. - İmza sonrası dosya değişti: JAR'a imzadan sonra dosya eklemek imzayı bozar.
Uygulamalı ipuçları
- Maven veya Gradle kullanıyorsanız imzalama adımını derleme hattına ekleyin; elle imzalamak hataya açıktır.
- Uygulama sunucuları ve Java Web Start benzeri ortamlarda imzalı JAR'ın sertifikası güvenilir depoda olmalıdır.
- Bir JAR'ı yeniden imzalamadan önce eski imza bloklarını (META-INF altındaki .SF ve .RSA dosyaları) silmeniz gerekebilir.
- Güncel JDK sürümlerinde zayıf algoritmaların kısıtlandığını unutmayın; SHA-256 ve üzerini tercih edin.
Uygun sertifika için kod imzalama sayfasına, özel anahtar güvenliğine dair kavramlar için bilgi bankasına göz atın. Zaman damgası eklemek, sertifika süresi dolduktan sonra da imzanın geçerli kalmasını sağlar.
Özet: jarsigner ile imzalama kısa bir komuttur, ancak doğru anahtar deposu, SHA-256 özeti ve zaman damgası kombinasyonu uzun vadeli doğrulanabilirliği belirler. Komutu yayın betiğine ekleyip her sürümde doğrulama yapmayı alışkanlık haline getirin.