Jarsigner, Java Development Kit (JDK) ile birlikte gelen ve JAR (Java Archive) dosyalarını dijital olarak imzalamak için kullanılan komut satırı aracıdır. İmzalı JAR dosyaları, kullanıcılara yazılımın güvenilir bir kaynaktan geldiğini ve değiştirilmediğini garanti eder.
JAR İmzalama Neden Gerekli?
Java uygulamalarının imzalanması şu nedenlerle önemlidir:
- Java Web Start: İmzasız uygulamalar çalıştırılmaz
- Applet güvenliği: Tarayıcı tabanlı Java uygulamalarında zorunludur
- Kullanıcı güveni: İmzalı JAR dosyaları güvenilir olarak işaretlenir
- Bütünlük kontrolü: Dosya değiştirilmişse imza geçersiz olur
- Maven/Gradle repository: Maven Central'a yükleme için imzalama zorunludur
Gereksinimler
- JDK 11 veya üzeri (jarsigner ve keytool dahil)
- Kod imzalama sertifikası (PFX/P12 formatında)
- İmzalanacak JAR dosyası
Adım 1: Keystore Oluşturun veya Sertifikayı İçe Aktarın
PFX sertifikanızı Java Keystore'a dönüştürün:
keytool -importkeystore -srckeystore sertifika.pfx -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype JKS
Mevcut anahtarları listelemek için:
keytool -list -keystore keystore.jks
Adım 2: JAR Dosyasını İmzalayın
jarsigner -keystore keystore.jks -tsa http://timestamp.digicert.com -digestalg SHA-256 -sigalg SHA256withRSA uygulama.jar alias_adi
Parametreler:
| Parametre | Açıklama |
|---|---|
-keystore | Keystore dosya yolu |
-tsa | Timestamp sunucusu URL (zaman damgası) |
-digestalg | Hash algoritması (SHA-256 önerilen) |
-sigalg | İmza algoritması |
alias_adi | Keystore'daki sertifikanın alias adı |
Adım 3: İmzayı Doğrulayın
jarsigner -verify -verbose -certs uygulama.jar
Başarılı çıktıda jar verified mesajını görmelisiniz.
Maven ile Otomatik JAR İmzalama
Maven projelerinde maven-jarsigner-plugin kullanarak build sürecinde otomatik imzalama yapabilirsiniz:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jarsigner-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<goals><goal>sign</goal></goals>
</execution>
</executions>
<configuration>
<keystore>keystore.jks</keystore>
<alias>alias_adi</alias>
<tsa>http://timestamp.digicert.com</tsa>
</configuration>
</plugin>
Yaygın Hatalar ve Çözümleri
"jar is unsigned" hatası
İmzalama işlemi başarısız olmuş veya JAR dosyası sonradan değiştirilmiş. İmzalama işlemini tekrarlayın ve sonradan JAR'a dosya eklemeyin.
"certificate chain not found" hatası
Keystore'da sertifika zinciri eksik. Intermediate ve root CA sertifikalarını da keystore'a eklemeniz gerekir:
keytool -importcert -keystore keystore.jks -file intermediate.cer -alias intermediate
Sık Sorulan Sorular
Java JAR imzalama için hangi sertifika gerekir?
Standart bir kod imzalama sertifikası (OV veya EV) Java JAR dosyalarını imzalamak için yeterlidir. Java'ya özel bir sertifika türü yoktur.
Maven Central'a yükleme için imzalama zorunlu mu?
Evet, Maven Central (Sonatype OSSRH) paket yükleme için GPG/PGP imzalama zorunlu tutar. Buna ek olarak JAR'ı kod imzalama sertifikası ile imzalamak ekstra güvenlik sağlar.
Yorumlar
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Yorum Yaz