2014-01-08 5 views
3

У меня есть апплет, который используется для подписи и шифрования файлов. После обновления Java для 7u45, мой апплет получает предупреждающее сообщение о том,: «Этого приложение будет блокироваться в будущем обновлении безопасности Java, потому что JAR файл манифест не содержит разрешение атрибута»JAR-файл манифеста не содержит атрибута разрешения

Затем я добавил следующее атрибуты:

Permissions: all-permissions 
Application-Library-Allowable-Codebase: * 
Application-Name: Signature-Chiffrement 
Caller-Allowable-Codebase: * 
Codebase: * 

к основной банке и все зависимостям баночки, после чего я повторно подписал все банки.

Однако предупреждение не исчезает, потому что «bcprov-доб-jdk16-140.jar» не подписан доверенным подписавшего здесь является исключением:

java.security.NoSuchProviderException: JCE cannot authenticate the provider BC .... 
Caused by: java.util.jar.JarException: bcprov-ext-jdk16-140.jar is not signed by a trusted signe… 

Видимо «bcprov- ext-jdk16-140.jar "был подписан бодрящим замком. Я попытался использовать еще один банальный замок, но, к сожалению, вся эта банда не содержит атрибута разрешения.

  • Есть ли способ, чтобы добавить атрибут разрешения на «bcprov-доб-jdk16-140.jar», который подписан до по Надувной замок? Или получить новый bcprov-ext JAR, имеющий необходимые атрибуты манифеста?
  • Можно ли добавить атрибут разрешений в одном месте, например, наш главный барабан зависит от других банок?

Заранее спасибо за помощь

+0

У меня такая же проблема с драйвером mssql, что и я [look] (http://stackoverflow.com/questions/20431623/java-web-start-manifest-issue) к моему обходу – nachokk

ответ

2

Для того, чтобы выполнить банку Bouncy castle, содержащую провайдера crypto в качестве апплета, мы должны подписать эту банку дважды.

Первая подпись (крипто провайдер) должен быть делать это с определенным сертификатом, выданным оракула (http://www.oracle.com/technetwork/java/javase/tech/getcodesigningcertificate-361306.html)

Вторая подпись для требований выполнения безопасности Java-плагин и может быть сделать это сертификаты, выданные любым CA признана поставщика (например, verisign и т. д.).

Bouncy castle bcprov-ext-jdk16-140.jar подписан сертификатом подписи кода oracle jce, но когда мы меняем манифест для добавления некоторых параметров, мы нарушаем эту подпись. Чтобы избежать этого исключения, мы должны подписать нашу банку также с помощью подписи кода JCE.

1

Я недавно эту проблему. Мое решение (возможно, не самая лучший, я принимаю предложение) было:

  • Удалить все, кроме MANIFEST.MF внутри каталога META-INF во все моем апплете банке, даже третьи СТОРОННИЕ ОДИН
  • Войти снова мои баночки с нашим корпоративным сертификат, используя простой скрипт Ant

http://ant.apache.org/manual/Tasks/signjar.html

Будет ли это сделать для вас?

+0

Спасибо за ваш отзыв I delete all файлы в каталоге META-INF ожидают MANIFEST.INF, после чего я оставил все файлы jars с нашим сертификатом. К сожалению, ошибка сохраняется только в bouncy jar «bcprov-ext-jdk16-140.jar» здесь исключение: java.security.NoSuchProviderException: JCE не может аутентифицировать поставщика BC .... Причиненный: bcprov-ext-jdk16- 140.jar не подписывается доверенным подписывающим лицом. – Khalilos

+0

Вы уже подписали его с сертификатом. Этот сертификат доверяет машина, в которой вы запускаете код? –

+0

Пожалуйста, что означает «сертификат, которому доверяет машина, в которой вы запускаете код»? На самом деле у меня нет исходного кода, у меня есть только файлы jar. Чтобы изменить manfiest каталог, я использую программу winrar, после чего я подписываю банку нашим сертификатом «6NRJ». Спасибо за помощь – Khalilos

Смежные вопросы