目前我正在尝试在java applet中删除7u45的安全性问题,但是它导致了applet加载的巨大问题。由于某种原因,所有类文件都没有正确加载。
更新您的情况。我有一个工作的java applet,它定义了jar文件清单中的类文件。他们是同一个问题的多个罐子。但问题对所有人来说都是一样的,所以如果我专注于这个罐子,我可以更简单地解释这个问题。
注意:所有JARS都已签名
所以jar的orignal版本在清单中包含以下内容,允许应用程序完美运行。
Manifest-Version: 1.0
Name: app.class
SHA-256-Digest: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
因此,为了解决7u45中安全警告和弹出窗口的问题,我已经包含了额外的参数(用于测试),以查看警告是否消失,警告消失但应用程序无法加载。以下是安全实现的当前清单
Manifest-Version: 1.0
Name: app.class
SHA-256-Digest: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Codebase: *
Permissions: all-permissions
Application-Library-Allowable-Codebase: *
Caller-Allowable-Codebase: *
Application-Name: xxxxxx
我只需在winrar中打开jar并使用记事本编辑清单并添加其他设置。
加载了应用程序,并且我的期望是applet没有显示任何安全警告,但随后出现了app.class的classNotFoundException的巨大错误。
jar文件包含以下文件:
.classpath
.project
META-INF/MANIFEST.MF
META-INF/LIC.RSA (licence)
META-INF/LIC.SF (licence)
app.class
我无法理解的是,在将安全属性添加到清单之前应用程序运行正常,没有它就可以找到app.class文件没有问题,但是一旦我使用新的安全性更改启动它应用程序无法再找到app.class文件。
我真的很困惑这个,有人能看到设置的问题????
提前致谢!
编辑注释 - 我有一个部署规则集,为该客户端计算机上的应用程序指定证书哈希。
编辑注意 - 需要调查的问题
它可能是*通配符吗?
是否可能无法使用清单中的其他内容指定安全更新?
更新注意: - 清单签名 - 回应'汤姆霍廷 - 强力补贴'(辞职Jar文件)
在使用安全性更改更新清单文件后尝试重新签名jar文件后,我注意到当我尝试使用jarsigner工具时,我收到了“Java.IOException - Invalid Manifest Format”错误。对此进行研究。这是由于清单无法正确读取清单。现在更新我所做的更改。遵循先前研究和教程示例的原则。我编辑了清单看起来像这样。
Manifest-Version: 1.0
Name: app.class
SHA-256-Digest: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Codebase: *
Permissions: all-permissions
Application-Library-Allowable-Codebase: *
Caller-Allowable-Codebase: *
Application-Name: xxxxxx
更改
但是,我仍然收到IO异常。我已将安全代码简化为“Applicaton-Name:xxxx”但它仍然无效。我想知道是否在winrar中打开jar文件,打开清单文件,编辑代码然后保存和更新存档导致问题?这应该在编译之前完成吗?或者是否允许打开一个罐子并编辑其内容?
更新
插入安全更改会导致无效的清单格式
答案 0 :(得分:1)
需要签署清单。 (它在Java的早期版本中未完全签名,这是不幸的。)因此,如果您更改清单的内容,您将需要辞职。您还应该使用最新的JDK对其进行签名,因为已经决定检查更多文件的签名。
答案 1 :(得分:0)
只需在JDK 7u45中使用jar编译器即可解决此问题。
创建包含安全更新的文本文件:
“addsecurity.txt” - 示例
代码库:*
权限:所有权限
Application-Library-Allowable-Codebase:*
Caller-Allowable-Codebase:*
申请名称:xxxxxx
=============================================== ===============
在命令提示符下运行以下命令(指定dd到jdk的bin文件夹)
jar umf addsecurity.txt yourjar.jar
这会将数据添加到jar的清单中。
问题解决了。 - (这对我很有用)