JAR文件清单不包含权限属性

时间:2014-01-08 14:16:09

标签: java applet bouncycastle

我有一个小程序,用于签名和加密文件。将java更新为7u45后,我的applet会收到警告消息: " 此应用程序将在未来的Java安全更新中被阻止,因为JAR文件清单不包含权限属性"

然后我添加了以下属性:

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

到主jar和所有jar依赖项,之后我重新签名所有jar。

但警告信息并未消失,因为" bcprov-ext-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”是由充气城堡签署的。 我试图使用另一个充气城堡jar但不幸的是所有这个jar都不包含权限属性。

  • 有没有办法添加权限属性 " bcprov-EXT-jdk16-140.jar"这是由充气城堡签署的? 或者获得一个具有所需清单attributs的新bcprov-ext JAR?
  • 是否可以在我们这样的地方添加权限属性 主罐子取决于其他罐子?

提前感谢您的帮助

2 个答案:

答案 0 :(得分:2)

为了执行包含加密提供程序作为applet 的Bouncy城​​堡jar,我们需要对此jar进行两次签名。

第一个签名(加密提供程序)必须使用oracle(http://www.oracle.com/technetwork/java/javase/tech/getcodesigningcertificate-361306.html)颁发的特定证书来执行此操作

第二个签名是针对java插件安全性执行要求的,可以通过任何CA认可的供应商颁发的证书(例如verisign等等)来完成。

Bouncy castle bcprov-ext-jdk16-140.jar由oracle jce代码签名证书签名,但是当我们更改清单以添加一些参数时,我们打破了这个签名。 为了避免这种异常,我们还需要使用JCE代码签名来签署我们的jar。

答案 1 :(得分:1)

我最近遇到过这个问题。我的解决方案(也许不是最好的,我接受建议)是:

  • 删除所有applet jar中META-INF目录内的MANIFEST.MF以外的所有内容,甚至是第三方jar
  • 使用简单的蚂蚁脚本
  • 再次使用我们的公司证书签署我的罐子

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

它能为你做到吗?