para firmar un jar es muy sencillo, basta tener la JDK, un «key store» con su user/pass/alias/private pass.
A la hora de firmar un jar lo que se hace es:
1.- generar un hash de cada clase en SHA y lo agrega al manifest de la siguiente manera
Manifest-Version: 1.0 Implementation-Vendor: Gobierno de Espana Implementation-Title: es.gob.afirma Implementation-Version: build01 Application-Library-Allowable-Codebase: * Specification-Vendor: Gobierno de Espana Application-Name: Applet Cliente Afirma Name: es/gob/afirma Permissions: all-permissions Specification-Title: Applet Cliente Afirma Specification-Version: 3.3.1 u5 Caller-Allowable-Codebase: * Codebase: * Name: org/bouncycastle/jcajce/provider/digest/Whirlpool$Digest.class SHA-256-Digest: FKks3RbQC/oJ2jlI2P9GKwYkEQdZNBOUW6dFI8uVdmM= ...
2.- Agrega unos ficheros que contienen el certificado, con el que se ha firmado, en la misma carpeta donde esta el MANIFEST.MF
En consola
jarsigner -keystore keystore.jks -storepass keystore_pass -keypass keystore_pass -signedjar jarsfirmados/LO_QUE_SEA.jar -verbose jars/LO_QUE_SEA.jar keystore_alias
Maven
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jarsigner-plugin</artifactId> <version>1.2</version> <executions> <execution> <id>sign</id> <goals> <goal>sign</goal> </goals> </execution> </executions> <configuration> <keystore>/path/to/testkeystore</keystore> <alias>myalias</alias> <storepass>depo.root</storepass> </configuration> </plugin>