Signierte Jars erkennen

Hi,

ich arbeite momentan mit E4 und möchte gerne ein Headless Build über Maven realisieren.

Soweit so gut es gibt das Tycho-Plugin - das funktioniert soweit auch gut. Nun gibt es die Anforderung, dass die Applikation per Webstart ausführbar sein muss.Von Sonatype gibt es dafür ein Mavenplugin.

Das Problem ist: Viele Jars sind schon signiert und pro JNLP darf nur ein Zertifikat verwendet werden. Das kann das Plugin nicht, daher möchte ich es erweitern.

Ich hab mir jetzt soweit Gedanken gemacht:

Jar für Jar untersuchen, schauen ob es schon signiert ist falls ja merke dir das Zertikat und den Jarnamen und Speicherort in einem Set>.

Ich denke Maven müsste ja schon dafür sorgen, dass keine Jars doppelt verwendet werden.

Pro eintrag für den Set wird ein JNLP angelegt und in einem „Main“-JNLP wird auf die verschiedenen Zertifikat-JNLPs verlinkt.

So nun meine Frage:

Wie bekomm ich raus, dass ein JAR bereits signiert ist und wie finde ich raus ob es sich bei gleichem Namen um das gleiche Zertifikat handelt?

Ich freu mich auf Antworten und Denkanstöße (vlt ist mein Weg ja auch nicht der intelligenteste?). Ok Unsignen wäre ein weg, ich weiss aber nicht ob das Lizenztechnisch ok ist, man verändert ja das JAR (und das Sonatype Plugin kann nicht unsignen - Hand anlegen muss ich sowieso…)

Grüße

Hallo,

um mal nur auf die eigentlicheh Frage einzugehen (von maven habe ich wenig, vom Rest den du erwähnt hast keine Ahnung):

jarsigner -verify -certs -verbose myjar.jar

Für ein unsigniertes JAR File

$ jarsigner -verify -certs -verbose myjar.jar

 s = signature was verified
 m = entry is listed in manifest
 k = at least one certificate was found in keystore
 i = at least one certificate was found in identity scope

no manifest.
jar is unsigned. (signatures missing or not parsable)

Für ein signiertes JAR wird für jede enthaltene Klasse das zur Signierung verwendete Zertifikat ausgegeben, das Format ist in etwa folgendes:

sm 96 Tue Jan 20 13:51:48 CET 2009 mypackage/MyClass.class

 X.509, [email protected], CN="Homer Simpson", O=Nuclear Plant, L=Springfield, ST=Some State, C=US
 [certificate is valid from 13.06.13 09:30 to 12.06.16 09:30]


 s = signature was verified
 m = entry is listed in manifest
 k = at least one certificate was found in keystore
 i = at least one certificate was found in identity scope

jar verified.

HTH
Heavy

Hi,

der unsigner aus dem JDK ist mit bekannt, ich wollte allerdings den Konfigurationsaufwand in Maven möglichst gering halten (die Funktionalität werde ich in mehreren Projekten brauchen) und das daher programmatisch lösen (und das der Community natürlich zur Verfügung stellen, sofern mein AG das erlaubt)

Da wäre eine Dependencie im etwas leichter, oder meinst du ich solle aus Java heraus den unsigner rufen und den output durchsuchen?

Gruß