目前我正在尝试消除 Java 小程序中 7u45 的安全问题,但是它导致了小程序加载的巨大问题。由于某种原因,所有类文件都没有正确加载。
向您通报最新情况。我有一个工作的 java 小程序,它在 jar 文件的 list 中定义类文件。他们是多个具有相同问题的 jar 。但问题对所有人来说都是一样的,所以如果我专注于这一个 jar ,我可以更简单地解释这个问题。
注意:所有 JARS 都已签名
所以 jar 的原始版本在 list 中包含以下内容,使应用程序可以完美运行。
Manifest-Version: 1.0
Name: app.class
SHA-256-Digest: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
因此,为了解决 7u45 中的安全警告和弹出窗口问题,我包含了额外的参数(用于测试)以查看警告是否消失以及警告是否消失但应用程序无法加载。以下是带有安全实现的当前 list
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 并用记事本编辑了 list 并添加了额外的设置。
加载了应用程序,按照我的预期,小程序没有显示安全警告,但随后出现了 app.class 的 classNotFoundException 的巨大错误。
jar 文件包含以下文件:
.classpath
.project
META-INF/MANIFEST.MF
META-INF/LIC.RSA (licence)
META-INF/LIC.SF (licence)
app.class
我无法理解的是,在将安全属性添加到 list 之前应用程序运行良好,没有它也可以毫无问题地找到 app.class 文件,但是一旦我启动它并进行新的安全更改应用程序无法再找到 app.class 文件。
我真的被这个问题困住了,有人能看出设置有问题吗????
提前致谢!
编辑说明 - 我有一个部署规则集,指定应用程序的证书哈希以及此客户端计算机上的证书。
编辑说明 - 要调查的问题
它可能是 * 通配符吗?
会不会是安全更新无法在manifest中指定附加内容?
更新说明:- list 签名 - 响应“Tom Hawtin - tackline”(放弃 Jar 文件)
在使用安全更改更新 list 文件后尝试退出 jar 文件后,我注意到在尝试使用 jarsigner 工具时收到“Java.IOException - list 格式无效”错误。正在研究这个。这是由于 list 无法正确读取 list 。现在更新我所做的更改。遵循先前研究的原则和教程示例。我将 list 编辑为如下所示。
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
变化
- 属性和值之间的空格,因为这是必需的。
- list 文件末尾的空格。
但是,我仍然收到 IO 异常。我已将安全代码缩减为“应用程序名称:xxxx”,但它仍然无法正常工作。我想知道在 winrar 中打开 jar 文件、打开里面的 list 文件、编辑代码然后保存和更新存档是否会导致问题?这应该在编译之前完成吗?还是允许打开 jar 并编辑其内容?
更新
插入安全更改会导致 list 格式无效
最佳答案
list 需要签名。 (不幸的是,它在早期版本的 Java 中未完全签名。)因此,如果您更改 list 的内容,则需要退出。您还应该使用最新的 JDK 对其进行签名,因为已决定检查更多文件的签名。
关于Java 7u45 安全属性 ClassNotFoundException list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20422831/