Článek byl kompletně aktualizován v listopadu 2026.
Podpis JAR souborů ověřuje identitu vydavatele a to, že archiv nikdo po podepsání nezměnil. Článek ukazuje, jak JAR podepsat nástrojem jarsigner z JDK s Code Signing certifikátem na hardwarovém tokenu nebo v cloudovém HSM.
Co se změnilo: applety a Java Web Start skončily
Java applety a Java Web Start, kvůli kterým se Java aplikace dříve podepisovaly nejčastěji, jsou minulostí. Prohlížeče přestaly zásuvný modul Java podporovat v letech 2015–2017 a Oracle odstranil Java plugin i Java Web Start z JDK 11. Desktopové Java aplikace se dnes obvykle distribuují jako nativní instalátor (např. vytvořený nástrojem jpackage), který se podepisuje nástroji dané platformy – pro Windows viz návod Jak podepisovat aplikace na Windows (signtool).
Podepsaný JAR má smysl tam, kde se ověřuje integrita a původ samotných JAR souborů – například u knihoven a pluginů, které si aplikace stahuje, nebo tam, kde to vyžadují firemní bezpečnostní pravidla.
Co budete potřebovat
- JDK (doporučujeme aktuální LTS verzi) – nástroje keytool a jarsigner.
- Code Signing certifikát s klíčem na tokenu nebo v cloudovém HSM. Od 1. června 2023 musí být klíč každého veřejně důvěryhodného Code Signing certifikátu v certifikovaném hardwaru, takže dřívější postup s klíčem v souborovém keystoru (JKS) pro veřejné certifikáty už nepoužijete.
- PKCS#11 knihovnu tokenu nebo cloudové služby – dodává ji výrobce tokenu (např. SafeNet Authentication Client) nebo poskytovatel cloudového HSM (např. DigiCert KeyLocker).
Konfigurace PKCS#11
Vytvořte konfigurační soubor, například pkcs11.cfg, s cestou ke knihovně PKCS#11. Pro token SafeNet na Windows vypadá takto:
name = Token library = C:\Windows\System32\eTPKCS11.dll
U jiného tokenu nebo cloudové služby použijte cestu ke knihovně podle dokumentace dodavatele.
Zjištění aliasu certifikátu
keytool -list -keystore NONE -storetype PKCS11 -addprovider SunPKCS11 -providerArg pkcs11.cfg
Budete vyzváni k zadání PINu tokenu. Ve výpisu najdete alias certifikátu, který použijete při podpisu.
Podpis JAR souboru
jarsigner -keystore NONE -storetype PKCS11 -addprovider SunPKCS11 -providerArg pkcs11.cfg -tsa http://timestamp.digicert.com -digestalg SHA-256 aplikace.jar "alias-certifikatu"
Parametr -tsa přidá časové razítko. Díky němu zůstane podpis platný i po expiraci certifikátu – to je důležité, protože od 1. března 2026 mají Code Signing certifikáty platnost nejvýše 460 dní. Místo serveru DigiCertu můžete použít i jiný veřejný server časových razítek, například http://timestamp.sectigo.com.
Kontrola podpisu
jarsigner -verify -verbose -certs aplikace.jar
Pokud je vše v pořádku, jarsigner vypíše jar verified a u souborů zobrazí údaje o certifikátu a časovém razítku.
Další informace
Kompletní popis parametrů najdete v dokumentaci Oraclu k nástrojům jarsigner a PKCS#11 Reference Guide. Code Signing certifikát, který lze použít pro Javu i pro Windows, pořídíte na SSLmarket.cz.
