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:
1 | $ jarsigner -keystore .... -digestalg SHA1 |
No ANT, é possível definir a propriedade na task signjar:
1 2 3 | < signjar ... digestalg = "SHA1" > ... </ signjar > |
E por fim, como indicar essa propriedade no Maven:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <!-- 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