O jarsigner mudou no Java 7, o algoritmo default da assinatura passou a ser o SHA-256. No Java 6 era o SHA-1. Esse foi o motivo do erro, na verdade existiam alguns jars usando as duas assinaturas, uma para SHA1 e outra SHA256 (é possível visualizar isso no Manifest.MF).
A solução do problema foi deixar explicito no jarsigner, o uso do algoritmo correto, através da propriedade -digestalg SHA1. Veja:
$ jarsigner -keystore .... -digestalg SHA1
No ANT, é possível definir a propriedade na task signjar:
<signjar ... digestalg="SHA1"> ... </signjar>
E por fim, como indicar essa propriedade no Maven:
<!-- omiti o restante do pom.xml --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jarsigner-plugin</artifactId> <version>1.2</version> <executions> <execution> <id>sign</id> <phase>package</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> <configuration> <keystore>...</keystore> <alias>...</alias> <storepass>...</storepass> <keypass>...</keypass> <digestalg>SHA1</digestalg> </configuration> </plugin> </plugins> </build> ...
Em outro post demonstro como usar o jarsigner pelo Maven.
@edermag
No comments:
Post a Comment