sslTrusJarsigner Kullanım Kılavuzu
Hazırlık
Kullanmadan önce hazırlayın:
- JDK 8 veya daha yeni sürüm.
sslTrusJarsigner-<version>.jar.- Access Key, Access Secret ve sertifika numarası.
- İmzalanacak JAR dosyası veya TIMS/1E XML dosyası.
Bu makaledeki <version>, kimlik bilgileri, sertifika numarası 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 sağlama dosyası
Kullanmadan önce sağlama dosyasına göre JAR dosyasının bütünlüğünü doğrulamanız önerilir.
Çalışma ortamını kontrol etme
Java, jarsigner ve araç dosyaları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"
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, lütfen bu değişkeni ayarlamayın.
İmza
Aşağıdaki örnek, app-unsigned.jar imzalandıktan sonra app-signed.jar olarak kaydedilir. Sabit parametreleri örnekteki gibi aynen kullanın.
JDK 9 veya daha yüksek 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 bir 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 aynı olmalıdır. - Orijinal JAR'ın üzerine yazmamak için her zaman
-signedjarile yeni bir dosya oluşturmanız önerilir. - Zaman damgası gerekmiyorsa
-tsave sonrasındaki adresi silebilirsiniz.
XML İmzalama (XMLDSig)
TIMS/1E XML'i, XML Digital Signature (XMLDSig) enveloped imza oluşturmak için sign-xml komutunu kullanır. Özel anahtar yalnızca uzak imzalama hizmetinde saklanmaya devam eder; araç XMLDSig için gereken özet ve imza yapısını yerel olarak oluşturur, ardından RSA imzası uzak hizmet tarafından tamamlanır.
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, Signature düğümü kök düğümün son alt düğümü olarak çıktı dosyasına yazılır. Geçerli imza profili sabittir:
| Öğe | Sabit Değer |
|---|---|
| İmza Türü | Enveloped signature |
| İmza Kapsamı | XML belgesinin tamamı, 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ına veya SignatureValue oluşturmasına gerek yoktur. Araç, uzak sertifikanın yaprak sertifikasını kullanarak KeyInfo/X509Data doldurur ve XML’e son SignatureValue yazar.
Tam Sertifika Zincirini Dahil Etme
Varsayılan çıktı, XML boyutunu küçültmek ve yaygın TIMS/1E dosyalarıyla tutarlılığı sağlamak için yalnızca yaprak sertifikayı içerir. Alıcı taraf, XML içinde ara sertifika zincirinin bulunmasını istiyorsa 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ı verilmediğinde 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ı doğrulanamayan dosyaların oluşmasını önlemek için tekrarlanan imzalamayı reddeder. - Şu anda yalnızca tüm belge için enveloped imza desteklenir; detached imza, öğ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 dayanan 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 neden olur. Her zaman orijinal girdi dosyasını koruyun ve imza sonucunu yeni bir çıktı dosyasına yazın.
Doğrulama Dosyası Oluşturma
İmzalamadan sonra doğrulama için gereken JKS dosyası oluşturulabilir:
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 imza doğrulama amacıyla kullanılır; imza gerçekleştirmek için kullanılamaz.
İmza 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
Erişim Anahtarı, Erişim Sırrı veya sertifika numarası eksik uyarısı
Mevcut terminalde aşağıdaki ortam değişkenlerinin ayarlandığından emin olun:
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 uyarısı
Şu anda JDK 8 kullanıyorsunuz. Lütfen bu belgedeki JDK 8 imzalama komutunu kullanın.
com.racent.codesign.SSLTrusProvider yüklenemiyor uyarısı
Lütfen kontrol edin:
sslTrusJarsigner-<version>.jaryolunun doğru olup olmadığını.- Dosya adındaki sürüm numarasının gerçek dosyayla eşleşip eşleşmediğini.
- JDK 8'in
JAVA_HOMEdeğerinin tam JDK'yi gösterip göstermediğini.
Sertifika veya alias bulunamadı uyarısı
Lütfen kontrol edin:
- Sertifika numarasının doğru olup olmadığını.
- Komutun sonundaki sertifika numarasının ortam değişkeniyle tutarlı 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ı, 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ülemiyorsa lütfen tam hata bilgisini saklayın ve teknik destekle iletişime geçin. Hata bilgisini göndermeden önce lütfen kimlik bilgilerini silin veya gizleyin.
Zaman damgası başarısız oldu
Mevcut ağın komuttaki zaman damgası adresine erişebildiğinden emin olun. İş koşulları izin veriyorsa -tsa ve sonrasındaki adresi geçici olarak silip imzalamayı yeniden çalıştırarak sorunu tespit edebilirsiniz.
Güvenlik Notları
- Gerçek Erişim Sırrını kaynak kodda, belgelerde, paylaşılan komut dosyalarında veya imajlarda 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 korumalı gizli değişkenler aracılığıyla 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 dosyasını saklamanız önerilir.