Co uniemożliwia Java weryfikację podpisanych słoików z wieloma algorytmami podpisu

Szybkie tło: Wydajemy aplikację webstart, która zawiera nasze własne słoiki aplikacji i liczne słoiki firm trzecich. Webstart wymaga, aby wszystkie rozproszone słoiki, do których odnosi się plik jnlp, były podpisane jednym certyfikatem. Dlatego podpisujemy wszystkie słoiki (nasze słoiki i słoiki firm trzecich) za pomocą samopodpisanego certyfikatu. Niektóre słoiki firm trzecich są już podpisane przez stronę, która je wyprodukowała, ale po prostu ponownie je podpisujemy, a to działa dobrze. Do teraz.

Problem: Niedawno przenieśliśmy się z Java 6 na Java 7 i nagle webstart odmawia załadowania niektórych słoików, skarżąc się: „Nieprawidłowy skrót pliku podpisu SHA1”. Dzieje się tak tylko w przypadku niektórych słoików, a nie innych, a wspólny wątek pojawia się wśród słoików, które zawodzą, wydaje się, że mają wiele podpisów.

Po wyszukiwaniu w S.O. i Internet, wydaje się, że domyślny algorytm podpisu dla jarsigner Javy zmienił się między Java 6 i Java 7, od SHA1 do SHA256, a różne osoby zalecają używanie „jarsigner -digestalg SHA1” do obejścia problemów z weryfikacją. Spróbowałem tego i na pewno nasze wielokrotnie podpisane słoiki są teraz weryfikowane. To wydaje się być obejściem dla naszego problemu.

Z tego, co mogę zebrać, wynika, że ​​podpis strony trzeciej to podpis SHA1 i podpisywaliśmy się domyślnie - SHA256 - co spowodowało mieszanie podpisów. Kiedy wymuszam SHA1 za pomocą przełącznika „-digestalg”, mamy dwa podpisy tego samego typu i teraz działa weryfikacja. Wydaje się, że przyczyną problemu jest posiadanie wielu podpisów z różnymi algorytmami? A może brakuje mi innego czynnika?

Pytania:

Dlaczego nie można zweryfikować za pomocą SHA1 + SHA256, ale weryfikuje za pomocą SHA1 + SHA1? Czy jest jakiś powód techniczny? Przyczyna polityki bezpieczeństwa? Dlaczego nie może sprawdzić, czy oba podpisy są poprawne?Czy jest jakaś wada, gdy używamy (kontynuując używanie) SHA1 zamiast domyślnego SHA256?

questionAnswers(3)

yourAnswerToTheQuestion