我有一个小程序,用于签名和加密文件。将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都不包含权限属性。
提前感谢您的帮助
答案 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)
我最近遇到过这个问题。我的解决方案(也许不是最好的,我接受建议)是:
http://ant.apache.org/manual/Tasks/signjar.html
它能为你做到吗?