Frage

Ich habe mit Web arbeiten seit ein paar Jahren beginnen jetzt und haben Erfahrung mit den Gläsern Unterzeichnung und was nicht. Ich nehme meinen ersten Versuch eine RCP Anwendung mit Web-Start-Bereitstellung und obwohl ich in der Tat habe alle die Gläser mit demselben Zertifikat signiert ich diesen Fehler erhalte: ‚jar Ressourcen in jnlp werde nicht von demselben Zertifikat signiert‘

Hat jemand anderes kam über das? Wenn ja, alle Ideen auf, wie sie zu beheben?

War es hilfreich?

Lösung

Wenn ich ähnliche Probleme hatte, nachdem die Gläser Überprüfung stellte sich heraus, dass einige 3rd-Party-Glas von jemand anderem unterzeichnet wurde.

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

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

Hier oder hier können Sie ein Beispiel finden.

Andere Tipps

Dies kann ein schaler manifest Eintrag aus einem bereits unterzeichneten Glas sein, die Sie als Bibliothek verwenden. Ich habe dieses Problem mit jogl über webstart. Versuchen Sie folgendes:

Alle Gläser Dekomprimieren, spülen Sie alle META-INF-Verzeichnisse, Glas und melden Sie sie wieder.

Ich habe festgestellt, dass JNLP / Webstart nicht mehrere Signaturen / Unterzeichnung über jarsigner.exe für einen bestimmten JAR mag. Wenn eine JAR wie BouncyCastle (die presigned kommt) unterzeichnet wird wieder mit Ihrem Unternehmens-Zertifikat, visuelle Inspektion führt mich zu glauben, dass das neue Zertifikat und Unterschriften ordnungsgemäß in der JAR durchgeführt werden. aber das JNLP sein kann, nur die erste (alphabetisch?) Signatur in dem META-INF zu lesen und dadurch beschwert es nicht Ihre andere JAR-Dateien überein (die nur eine, Unternehmen, Unterschrift auf jeder JAR).

Ich hatte genau die gleiche Erfahrung wie von Matthew mit den presigned BouncyCastle JAR-Dateien beschrieben. Allerdings fand ich, dass die JRE-Version 1.6.0_14 und später gerne JAR-Dateien mit mehreren Signaturen akzeptieren (wie ich erwarten würde). Daher habe ich nicht brauchen, um die ‚Komponente Erweiterungsmechanismus‘ JNLP verwenden oben beschrieben.

PS Hat keine offensichtlichen Hinweise auf dieses Updates in den 1.6.0_14 Release Notes finden. Allerdings habe ich festgestellt, dass mehrere signierte JAR-Dateien in allen späteren Versionen funktioniert (mindestens 14-17 + 24).

Sehen Sie die Erklärung für eine der FAQ: Wie kann ich mehr JAR-Dateien verwenden, die von verschiedenen Zertifikaten signiert?

richtige Lösung.

In meinem Projekt, was passiert ist, dass es einige Fälle in der Load-Balancer-Pool, gibt es einige Fälle, mit alten Version von Code und einige mit der neuen Version. So gibt es Zertifikate nicht von demselben Zertifikat signiert ...

Das folgende Skript listet die Seriennummer des RSA-Zertifikats in jedem Glas in / some / lib und hilft Gläser zu finden, die von dem falschen Zertifikat signiert werden:

for f in $( find /some/lib -type f -name '*.jar' )
do 
   serial=$( unzip -p $f 'META-INF/*.RSA' | 
             openssl pkcs7 -inform der -print -noout |
             grep --max-count=1 serialNumber | cut -d: -f2- | tr -d ' ' )
   printf "%40s: %s\n" "$serial" "$f"
done
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top