Jarsigner mit Zertifikat-Token

Hallo,

ich signiere schon seit Jahren ein JAR mit jarsigner. Das Zertifikat stammt von GlobalSign, die haben sogar einen schönen Artikel dazu in ihrer Knowledgebase:

Jetzt habe ich ein neues Token bekommen, aber damit funktioniert das Verfahren nicht mehr. Das Problem ist, dass das Token auf ein Root- bzw. Zwischenzertifikate beruht, die standardmäßig nicht im Java-Keystore (cacerts) enthalten sind. Das meckert jarsigner dann an:

The signer’s certificate chain is invalid. Reason: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Ok, die fehlenden Zertifikate kann ich zu cacerts hinzufügen. Dann klappt’s auch mit dem Signieren. Dann muss man das auf der Zielmaschine auch machen, sonst wird das JAR von (Open)WebStart als self-signed abgelehnt. Genau das möchte ich vermeiden, an die Zielmachine(n) komme ich nicht so ohne weiteres ran. Nein, es soll wie bisher mit eine Standard-JRE-Installation funktionieren, also z.B. Java 8 LTS oder OpenJDK mit OpenWebStart.

Meine Idee ist, dem JAR beim Signieren die fehlenden Zwischenzertifiktae mitzugeben. Das sollte doch mit jarsigner -certchain gehen, oder? Leider endeten alle meine Versuche beim anschließenden -verify mit einer Fehlermeldung:

jarsigner: java.lang.SecurityException: cannot verify signature block file META-INF/TE-4E779

Der GlobalSign-Support hat es auch nicht hinbekommen und steht nun nach einigem Hin und Her auf dem Standpunkt „Das Zertifikat wurde korrekt ausgestellt, alles weitere ist nicht unser Problem“. Na toll. :frowning:

Ich bin auch mit meinem Latein am Ende Hat hier evtl. jemand eine Idee?

Liebe Grüße,
Jürgen