sslTrusJarsigner Kullanım Kılavuzu
Hazırlık
Kullanmadan önce hazırlayın:
- JDK 8 veya daha yüksek bir sürüm.
sslTrusJarsigner-<version>.jar.- Access Key, Access Secret ve sertifika numarası.
- İmzalanacak JAR dosyası veya TIMS/1E XML dosyası.
Lütfen bu metindeki <version>, kimlik bilgilerini, sertifika numarasını ve dosya yollarını gerçek değerlerle değiştirin.
İndirme
En son sürüm paketini aşağıdaki sayfadan indirin:
ZIP dosyasını indirip açtıktan sonra şunları elde edersiniz:
sslTrusJarsigner-<version>.jar- SHA-256 doğrulama dosyası
Kullanmadan önce doğrulama dosyasına göre JAR dosyasının bütünlüğünü kontrol etmeniz önerilir.
Çalışma ortamını kontrol etme
Java, jarsigner ve araç dosyasının kullanılabilir olduğunu doğrulamak için aşağıdaki komutu çalıştırın:
java -version
jarsigner -help
java -jar sslTrusJarsigner-<version>.jar --version
Yardım bilgilerini görüntüleyin:
java -jar sslTrusJarsigner-<version>.jar --help
Kimlik Bilgilerini Yapılandırma
Linux ve macOS
export SSLTRUS_JARSIGNER_ACCESS_KEY="YOUR_ACCESS_KEY"
export SSLTRUS_JARSIGNER_ACCESS_SECRET="YOUR_ACCESS_SECRET"
export SSLTRUS_JARSIGNER_CERT_CODE="YOUR_CERT_CODE"
Windows PowerShell
$env:SSLTRUS_JARSIGNER_ACCESS_KEY = "YOUR_ACCESS_KEY"
$env:SSLTRUS_JARSIGNER_ACCESS_SECRET = "YOUR_ACCESS_SECRET"
$env:SSLTRUS_JARSIGNER_CERT_CODE = "YOUR_CERT_CODE"
Yetkili personel özel bir servis adresi sağladıysa, ayrıca şunu da ayarlamanız gerekir:
Linux ve macOS:
export SSLTRUS_JARSIGNER_URL="YOUR_SERVICE_URL"
Windows PowerShell:
$env:SSLTRUS_JARSIGNER_URL = "YOUR_SERVICE_URL"
Özel bir hizmet adresi sağlanmadığında, bu değişkeni ayarlamayın.
İmza
Aşağıdaki örnek, app-unsigned.jar imzaladıktan sonra app-signed.jar olarak kaydeder. Sabit parametreleri örnekte gösterildiği gibi kullanın.
JDK 9 veya daha yeni sürüm
Linux ve macOS:
jarsigner \
-keystore NONE \
-storetype SSLTRUS \
-storepass SSLTRUS \
-providerPath "sslTrusJarsigner-<version>.jar" \
-providerClass com.racent.codesign.SSLTrusProvider \
-sigalg SHA256withRSA \
-tsa http://timestamp.sectigo.com \
-signedjar "app-signed.jar" \
"app-unsigned.jar" \
"$SSLTRUS_JARSIGNER_CERT_CODE"
Windows PowerShell:
jarsigner `
-keystore NONE `
-storetype SSLTRUS `
-storepass SSLTRUS `
-providerPath "sslTrusJarsigner-<version>.jar" `
-providerClass com.racent.codesign.SSLTrusProvider `
-sigalg SHA256withRSA `
-tsa http://timestamp.sectigo.com `
-signedjar "app-signed.jar" `
"app-unsigned.jar" `
"$env:SSLTRUS_JARSIGNER_CERT_CODE"
JDK 8
Lütfen önce JAVA_HOME öğesinin eksiksiz JDK 8'e işaret ettiğini doğrulayın.
Linux ve macOS:
jarsigner \
-J-cp \
-J"$JAVA_HOME/lib/tools.jar:sslTrusJarsigner-<version>.jar" \
-keystore NONE \
-storetype SSLTRUS \
-storepass SSLTRUS \
-providerClass com.racent.codesign.SSLTrusProvider \
-sigalg SHA256withRSA \
-tsa http://timestamp.sectigo.com \
-signedjar "app-signed.jar" \
"app-unsigned.jar" \
"$SSLTRUS_JARSIGNER_CERT_CODE"
Windows PowerShell:
jarsigner `
-J-cp `
"-J$env:JAVA_HOME\lib\tools.jar;sslTrusJarsigner-<version>.jar" `
-keystore NONE `
-storetype SSLTRUS `
-storepass SSLTRUS `
-providerClass com.racent.codesign.SSLTrusProvider `
-sigalg SHA256withRSA `
-tsa http://timestamp.sectigo.com `
-signedjar "app-signed.jar" `
"app-unsigned.jar" `
"$env:SSLTRUS_JARSIGNER_CERT_CODE"
- Komutun sonundaki sertifika numarası
SSLTRUS_JARSIGNER_CERT_CODEile eşleşmelidir. - Orijinal JAR'ın üzerine yazılmasını önlemek için her zaman
-signedjarkullanarak yeni bir dosya oluşturmanız önerilir. - Zaman damgası gerekmiyorsa
-tsave sonrasındaki adresi silebilirsiniz.
XML İmzalama (XMLDSig)
TIMS/1E XML, XML Digital Signature (XMLDSig) enveloped imzayı oluşturmak için sign-xml komutunu kullanır. Özel anahtar yalnızca uzak imza hizmetinde tutulmaya devam eder; araç XMLDSig için gerekli özet ve imza yapısını yerelde oluşturur, ardından uzak hizmet RSA imzalamasını tamamlar.
Linux ve macOS:
java -jar sslTrusJarsigner-<version>.jar \
sign-xml \
"input.xml" \
"signed.xml" \
"$SSLTRUS_JARSIGNER_CERT_CODE"
Windows PowerShell:
java -jar sslTrusJarsigner-<version>.jar `
sign-xml `
"input.xml" `
"signed.xml" `
"$env:SSLTRUS_JARSIGNER_CERT_CODE"
İmza Formatı
Oluşturulan imza, XMLDSig standart ad alanını http://www.w3.org/2000/09/xmldsig# kullanır ve Signature düğümü, kök düğümün son alt düğümü olarak çıktı dosyasına yazılır. Geçerli imza profili aşağıdaki gibi sabittir:
| Öğe | Sabit Değer |
|---|---|
| İmza Türü | Enveloped signature |
| İmza Kapsamı | Tüm XML belgesi, Reference URI="" |
| Reference Transform | Enveloped Signature Transform |
| Canonicalization | Inclusive Canonical XML 1.0 |
| Özet Algoritması | SHA-256 |
| İmza Algoritması | RSA-SHA256 |
KeyInfo | X509Data, varsayılan olarak yaprak sertifikayı içerir |
Çağıran tarafın özeti kendisi hesaplaması veya SignatureValue oluşturması gerekmez. Araç, uzak sertifikanın yaprak sertifikasını kullanarak KeyInfo/X509Data alanını doldurur ve XML’e nihai SignatureValue değerini yazar.
Tam Sertifika Zincirini Dahil Etme
Varsayılan çıktı yalnızca yaprak sertifikayı içerir; bu, XML boyutunu azaltır ve yaygın TIMS/1E dosyalarıyla tutarlılık sağlar. Alıcı taraf, XML içinde ara sertifika zincirinin bulunmasını talep ediyorsa komutun sonuna --full-chain ekleyin:
java -jar sslTrusJarsigner-<version>.jar \
sign-xml \
"input.xml" \
"signed.xml" \
"$SSLTRUS_JARSIGNER_CERT_CODE" \
--full-chain
--full-chain yalnızca KeyInfo/X509Data içindeki sertifika listesini etkiler; imza kapsamını, özet algoritmasını veya imza algoritmasını değiştirmez. Bu seçenek sertifika numarasından önce veya sonra yerleştirilebilir; sertifika numarası sağlanmadığında SSLTRUS_JARSIGNER_CERT_CODE kullanılır.
Girdi ve Kullanım Kısıtlamaları
- Girdi, doğru biçimlendirilmiş XML olmalı ve bir kök düğüm içermelidir.
- Girdi dosyası zaten bir XMLDSig
Signaturedüğümü içeremez; araç, imza kapsamı belirsiz dosyaların oluşmasını önlemek için yinelenen imzalamayı reddeder. - Şu anda yalnızca tüm belgenin enveloped imzası desteklenir; detached signature, öğe kimliğine göre imzalama veya özel XMLDSig profili desteklenmez.
- Araç, XML harici varlıklarını ve harici DTD yüklemeyi devre dışı bırakır; bu nedenle harici varlık genişletmeye bağımlı XML kabul edilmez.
- İmzalama tamamlandıktan sonra XML’in yapısını, metnini, özniteliklerini veya ad alanlarını değiştirmeyin; bu tür herhangi bir değişiklik XMLDSig doğrulamasının başarısız olmasına yol açar. Orijinal girdi dosyası her zaman korunmalı ve imzalama sonucu yeni bir çıktı dosyasına yazılmalıdır.
Doğrulama Dosyası Oluşturma
İmzaladıktan sonra, doğrulama için gereken JKS dosyasını oluşturabilirsiniz:
Linux ve macOS:
java -jar sslTrusJarsigner-<version>.jar \
generate-keystore \
"$SSLTRUS_JARSIGNER_CERT_CODE" \
"verify.jks" \
"SSLTRUS"
Windows PowerShell:
java -jar sslTrusJarsigner-<version>.jar `
generate-keystore `
"$env:SSLTRUS_JARSIGNER_CERT_CODE" `
"verify.jks" `
"SSLTRUS"
verify.jks yalnızca imzayı doğrulamak için kullanılır, imza oluşturmak için kullanılamaz.
İmzayı Doğrulama
Oluşturulan verify.jks ile imzalanmış JAR'ı doğrulayın:
jarsigner \
-verify \
-verbose \
-certs \
-keystore "verify.jks" \
-storetype JKS \
-storepass "SSLTRUS" \
"app-signed.jar"
Yalnızca JAR imza bilgilerini görüntülemeniz gerekiyorsa:
jarsigner -verify -verbose -certs "app-signed.jar"
SSS
Access Key, Access Secret veya sertifika numarasının eksik olduğu belirtiliyor
Lütfen mevcut terminalde aşağıdaki ortam değişkenlerinin ayarlandığını doğrulayın:
SSLTRUS_JARSIGNER_ACCESS_KEYSSLTRUS_JARSIGNER_ACCESS_SECRETSSLTRUS_JARSIGNER_CERT_CODE
Ortam değişkenlerini ayarladıktan sonra imzalama komutunu aynı terminal penceresinde çalıştırmanız gerekir.
Geçersiz seçenek: -providerPath belirtiliyor
Şu anda JDK 8 kullanıyorsunuz. Lütfen bu makaledeki JDK 8 imzalama komutunu kullanın.
com.racent.codesign.SSLTrusProvider yüklenemediği belirtiliyor
Lütfen kontrol edin:
sslTrusJarsigner-<version>.jaryolunun doğru olup olmadığını.- Dosya adındaki sürüm numarasının gerçek dosyayla uyumlu olup olmadığını.
- JDK 8'in
JAVA_HOMEtam bir JDK'yı işaret edip etmediğini.
Sertifika veya alias bulunamadığı belirtiliyor
Lütfen kontrol edin:
- Sertifika numarasının doğru olup olmadığını.
- Komutun sonundaki sertifika numarasının ortam değişkeniyle uyumlu olup olmadığını.
- Mevcut kimlik bilgisinin bu sertifikayı kullanma yetkisinin olup olmadığını.
İmzalama isteği başarısız oldu
Lütfen kontrol edin:
- Ağ bağlantısını, proxy ve güvenlik duvarı ayarlarını.
- Kimlik bilgisi ve sertifika numarasının doğru olup olmadığını.
- Özel servis adresinin servis yetkilisinin sağladığı içeriğe göre yapılandırılıp yapılandırılmadığını.
Sorun hâlâ çözülmezse lütfen eksiksiz hata bilgisini saklayın ve teknik destekle iletişime geçin. Hata bilgisini göndermeden önce kimlik bilgilerini silin veya gizleyin.
Zaman damgası başarısız oldu
Lütfen mevcut ağın komuttaki zaman damgası adresine erişebildiğini doğrulayın. İşiniz izin veriyorsa sorunu belirlemek için -tsa ve sonrasındaki adresi geçici olarak silip imzalamayı yeniden çalıştırabilirsiniz.
Güvenlik notları
- Kaynak kodda, belgelerde, paylaşılan betiklerde veya imajlarda gerçek Access Secret saklamayın.
- Kimlik bilgisi içeren komut satırlarını, terminal geçmişini veya ardışık düzen günlüklerini dışarıyla paylaşmayın.
- Otomasyon ortamlarında kimlik bilgilerini korunan gizli anahtar değişkenleriyle enjekte edin.
- Araçları güvenilir yayın kanallarından indirin ve kullanmadan önce dosya bütünlüğünü doğrulayın.
- İmzasız orijinal JAR dosyalarının saklanması önerilir.