Что мешает Java проверять подписанные файлы JAR с несколькими алгоритмами подписи

Быстрый фон: Мы выпускаем приложение веб-запуска, которое включает в себя наши собственные jar-файлы приложений и многочисленные сторонние jar-файлы. Webstart требует, чтобы все распределенные файлы jar, на которые ссылается файл jnlp, были подписаны одним сертификатом. Поэтому мы подписываем все банки (наши банки и банки третьих сторон), используя самозаверяющий сертификат. Некоторые сторонние банки уже подписаны стороной, которая их произвела, но мы просто подписываем их снова, и это прекрасно работает. До сих пор.

Проблема: Недавно мы перешли с Java 6 на Java 7, и внезапно webstart отказывается загружать некоторые файлы jar, жалуясь: «Неверный дайджест файла подписи SHA1 ", Это происходит только для некоторых jar-файлов, а не для других, и среди этих jar-файлов появляется общая нить с несколькими сигнатурами.

Обыскав на С.О. и Интернет, кажется, что алгоритм подписи по умолчанию для Javas jarsigner изменился между Java 6 и Java 7, с SHA1 на SHA256, и разные люди рекомендуют использовать "jarsigner -digestalg SHA1 " работать вокруг вопросов проверки. Я попробовал это, и, конечно же, наши банки с несколькими знаками теперь подтверждают. Так что, похоже, это обходной путь для нашей проблемы.

Из того, что я могу собрать, видно, что сторонняя подпись является подписью SHA1, и мы подписывали ее по умолчанию - SHA256 - что привело к смешению подписей. Когда я заставляю SHA1, используя-digestalg» Переключатель, у нас есть две подписи одного типа, и проверка теперь работает. Таким образом, кажется, что проблема вызвана наличием нескольких подписей с разными алгоритмами? Или есть какой-то другой фактор, который ям отсутствует.

Вопросы:

Почему не удается проверить с помощью SHA1 + SHA256, но выполнить проверку с помощью SHA1 + SHA1? Есть ли техническая причина? Причина политики безопасности? Почему можнот это проверить, что обе подписи верны?Есть ли у нас какой-то недостаток в использовании (продолжающем использование) SHA1 вместо используемого по умолчанию SHA256?

Ответы на вопрос(3)

Ваш ответ на вопрос