2009-01-10 3 views
16

Ich arbeite seit ein paar Jahren mit Web Start und habe Erfahrung mit der Unterzeichnung der Gläser und was nicht. Ich mache meinen ersten Versuch, eine RCP-Anwendung mit Web-Start zu implementieren, und obwohl ich tatsächlich alle Gläser mit dem gleichen Zertifikat signiert habe, bekomme ich diesen Fehler: "jar-Ressourcen in jnlp sind nicht vom selben Zertifikat signiert"jar Ressourcen in jnlp sind nicht mit dem gleichen Zertifikat signiert

Hat jemand anderes das gefunden? Wenn ja, irgendwelche Ideen zur Behebung?

Antwort

12

Als ich nach der Überprüfung der Gläser ähnliche Probleme hatte, stellte sich heraus, dass ein Glas von Drittanbietern von jemand anderem unterschrieben wurde.

Sie sollten eine separate jnlp Datei für die von dem anderen Zertifikat und lesen Sie diese jnlp von Ihrer jnlp Datei signiert Gläser erstellen:

<resources> 
    ... 
    <extension name="other" href="other.jnlp"/> 
</resources> 

Here oder here Sie ein Beispiel finden.

+0

Das macht total Sinn, danke! – javamonkey79

+2

Ich stieß auf das gleiche Problem. Anstatt Extensions zu verwenden, schrieb ich ein kleines Skript, um die Signaturdateien (z. B. META-INF/* .RSA, * .DSA und * .SF) aus den 3rd-Party-Jars zu entfernen, bevor ich sie selbst signierte. – qualidafial

+1

Das ist in Ordnung, wenn Sie die Originalsignatur nicht benötigen. Aber manchmal brauchst du das. – asalamon74

3

Dies kann ein veralteter Manifesteintrag aus einem bereits signierten JAR sein, das Sie als Bibliothek verwenden. Ich habe dieses Problem mit Jogl via Webstart festgestellt. Versuchen Sie dies:

Entpacken Sie alle Gläser, löschen Sie alle META-INF-Verzeichnisse, Glas und signieren Sie sie erneut.

3

Ich habe festgestellt, dass JNLP/Webstart nicht mehrere Signaturen/Signaturen über jarsigner.exe für eine bestimmte JAR mögen. Wenn ein JAR wie BouncyCastle (das vorgebildet ist) erneut mit dem Zertifikat Ihres Unternehmens signiert wird, führt eine visuelle Überprüfung zu der Annahme, dass das neue Zertifikat und die neuen Signaturen ordnungsgemäß im JAR ausgeführt werden. aber dass JNLP möglicherweise nur die erste (alphabetische?) Signatur im META-INF liest und sich damit beschwert, dass es nicht mit Ihren anderen JARs übereinstimmt (die nur eine Corporate-Signatur in jeder JAR haben).

+0

Ich kann dies bestätigen. Gleiches hier: vorhandene Signatur für eine von Eclipse bereitgestellte JAR (beginnend mit _E_) und hinzugefügte Signatur, die mit _V_ beginnt. Die Signatur ist OK für mein eigenes Zertifikat, aber JNLP scheint mit dem Eclipse-Zertifikat zu überprüfen. – Kariem

2

Ich hatte genau die gleiche Erfahrung wie von Matthew mit den vordefinierten BouncyCastle JARs beschrieben. Ich habe jedoch festgestellt, dass JRE Version 1.6.0_14 und höher JARs mit mehreren Signaturen (wie zu erwarten) gerne akzeptiert. Daher musste ich den oben beschriebenen JNLP-Komponentenerweiterungsmechanismus nicht verwenden.

PS Keine offensichtlichen Verweise auf dieses Update in den Versionshinweisen 1.6.0_14 gefunden. Ich habe jedoch überprüft, dass mehrere signierte JARs in allen späteren Versionen (mindestens 14 - 17 + 24) funktionieren.

0

In meinem Projekt, was passiert ist, dass es einige Instanzen im Load Balancer-Pool gibt, gibt es einige Instanzen mit alter Version von Code und einige mit neuer Version. So gibt es Zertifikate, die nicht vom selben Zertifikat signiert sind ...

Verwandte Themen