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