Was Java daran hindert, signierte Jars mit mehreren Signaturalgorithmen zu überprüfen

Schneller Hintergrund: Wir veröffentlichen eine Webstart-Anwendung, die unsere eigenen Anwendungs-Jars und zahlreiche Jars von Drittanbietern enthält. Für Webstart müssen alle verteilten Jars, auf die in der JNLP-Datei verwiesen wird, mit einem einzigen Zertifikat signiert sein. Wir signieren daher alle Gläser (unsere Gläser und die Gläser von Drittanbietern) mit einem selbstsignierten Zertifikat. Einige Gläser von Drittanbietern sind bereits von der Partei signiert, die sie hergestellt hat, aber wir signieren sie einfach noch einmal, und das funktioniert einwandfrei. Bis jetzt.

Problem: Wir sind kürzlich von Java 6 auf Java 7 umgestiegen, und plötzlich weigert sich Webstart, einige Gläser zu laden, und beklagt sich: "Invalid SHA1 Signature File Digest". Dies geschieht nur für einige Gläser und nicht für andere, und der gemeinsame Thread scheint unter den fehlgeschlagenen Gläsern mehrere Signaturen zu haben.

Nach der Suche auf S.O. und im Internet scheint sich der Standardsignaturalgorithmus für Javas Jarsigner zwischen Java 6 und Java 7 von SHA1 auf SHA256 geändert zu haben, und verschiedene Personen empfehlen die Verwendung von "jarsigner -digestalg SHA1", um Verifizierungsprobleme zu umgehen. Ich habe das ausprobiert, und unsere mehrfach signierten Gläser bestätigen es jetzt. Dies scheint also eine Problemumgehung für unser Problem zu sein.

Soweit ich das beurteilen kann, handelt es sich bei der Drittanbieter-Signatur anscheinend um eine SHA1-Signatur, und wir haben mit der Standard-Signatur SHA256 signiert, was zu einer Vermischung der Signaturen geführt hat. Wenn ich SHA1 mit dem Schalter '-digestalg' erzwinge, haben wir zwei Signaturen desselben Typs, und die Überprüfung funktioniert jetzt. Das Problem scheint also darauf zurückzuführen zu sein, dass mehrere Signaturen mit unterschiedlichen Algorithmen vorliegen. Oder gibt es einen anderen Faktor, den ich vermisse?

Fragen:

Warum schlägt die Überprüfung mit SHA1 + SHA256 fehl, aber mit SHA1 + SHA1? Gibt es einen technischen Grund? Ein sicherheitspolitischer Grund? Warum kann es nicht überprüfen, ob beide Signaturen korrekt sind?Gibt es einen Nachteil, wenn wir SHA1 anstelle des jetzt voreingestellten SHA256 verwenden (weiterhin verwenden)?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage