ресурсы jar в jnlp не подписаны одним и тем же сертификатом
Я работаю с web start уже пару лет и имею опыт подписания банок, а что нет. Я предпринимаю свою первую попытку развертывания приложения RCP с веб-запуском, и хотя я фактически подписал все банки с тем же сертификатом, я продолжаю получать эту ошибку: "ресурсы jar в jnlp не подписаны тем же сертификатом"
кто-нибудь сталкивался с этим? Если да, есть идеи о том, как исправить?
6 ответов
когда у меня были подобные проблемы после проверки банок, оказалось, что какая-то сторонняя банка была подписана кем-то другим.
вы должны создать отдельный файл jnlp для банок, подписанных другим сертификатом, и прочитать этот jnlp из вашего файла jnlp:
<resources>
...
<extension name="other" href="other.jnlp"/>
</resources>
Это может быть устаревшая запись манифеста из уже подписанного jar, который используется в качестве библиотеки. Я столкнулся с этой проблемой с jogl через webstart. Попробуйте это:
распаковать все банки, очистить все каталоги META-INF, банку и подписать их снова.
Я обнаружил, что JNLP/Webstart не любит несколько подписей/подписей через jarsigner.exe для данной банки. Если банка, такая как BouncyCastle (которая поставляется под председательством), снова подписывается сертификатом вашей компании, визуальный осмотр заставляет меня поверить, что новый сертификат и подписи выполняются должным образом в банке. но этот JNLP может читать только первый (Алфавитный?) подпись в META-INF, и тем самым жалуясь, что она не соответствует вашим другим банкам (которые имеют только один, корпоративный, подпись на каждой банке).
У меня был точно такой же опыт, как описано у Матфея с presigned после установки BouncyCastle банки. Однако я обнаружил, что JRE версии 1.6.0_14 и позже с удовольствием примет банки с несколькими подписями (как и следовало ожидать). Следовательно, мне не нужно было использовать механизм расширения компонентов JNLP, описанный выше.
PS Не нашел никаких очевидных ссылок на это исправление в примечаниях к выпуску 1.6.0_14. Однако я проверил, что несколько подписанных банок работают во всех более поздних версиях (в минимум 14 - 17 + 24).
см. объяснение одного из FAQ:Как использовать несколько файлов JAR, подписанных разными сертификатами?
правильное решение.
в моем проекте произошло то, что в пуле балансировщика нагрузки есть несколько экземпляров, есть несколько экземпляров со старой версией кода и некоторые с новой версией. Таким образом, существуют сертификаты, не подписанные одним и тем же сертификатом...