Java 7 明显的安全变化

2024-01-18

随着最近对 Java 7s 安全检查的更改,我正在更新我们的 Webstart 应用程序,以允许它在没有警告的情况下运行。

我们的 webstart 应用程序由许多 jar 文件组成,其中只有少数是我们开发的,我们使用许多第 3 方 jar 文件(log4j、swingx 等)

我们之前的设置使用了自签名证书,我们用它签署了所有 jar 文件。 我们现在已经从适当的 CA 购买了签名证书。

到目前为止我采取的步骤是:

  • 解压 jar 文件
  • 从所有 jar 文件中删除旧证书(从清单中删除 *.DSA *.SF *.RSA 和哈希值)
  • 重新打包jar文件
  • 将 Permission、Codebase、Application-Name 属性添加到包含我们的主类的 jar 文件中。
  • 使用新密钥对 jar 文件进行签名

在装有 Java 7 u45 的机器上在 webstart 中运行它不会出现警告对话框,这很棒。

但是,查看 java 控制台,我发现它警告其他 jar 文件的所有 jar 缺少权限、代码库、应用程序名称属性。我是否还应该将这些属性添加到每个 jar 文件中?

我已经对重新打包第 3 方 jar 文件感到不安,但现在也必须添加清单属性让我觉得我错过了一些东西。

那么,变化是体现还是其他什么? 谢谢,圣诞快乐

编辑: 感谢您的有用回复,我只是想用我已实施的解决方案的一些细节来更新此内容。

我按照以下步骤重新打包应用程序所需的每个 jar 文件。 - 将jar文件解压到临时目录
- 从 META-INF 中删除 *.DSA *.RSA *.SF
- 从 META-INF/MANIFEST.MF 中删除以以下开头的行
- SHA-256-摘要
- SHA1-摘要
- 权限
- 代码库
- 应用名称
- 将行插入 META-INF/MANIFEST.MF
- 权限:所有权限
- 代码库:*
- 应用程序名称:我的应用程序名称
- 确保 MANIFEST.MF 中的所有行结尾都适合我的系统 (dos2unix)
- 使用指定的新清单重新创建 jar 文件
- 使用当前代码签名证书对 jar 文件进行签名

希望有帮助


是的,您需要添加Permission, Codebase, and Application-Name为您的应用程序使用的每个 .jar 清单属性。这是主应用程序 .jar 以及所有第 3 方库 .jar。

看这个答案https://stackoverflow.com/a/19659135/963076 https://stackoverflow.com/a/19659135/963076到另一个SO问题。

你感到不安是件好事。据我了解,将内容添加到第 3 方库的清单中违反了几乎所有库附带的 GNU 许可协议。当 Oracle 发布这些关于他们想法的更新时,我一直摸不着头脑。为什么第三方库需要指定 JNLP 代码库?他们是否知道他们正在强迫我们违反这些第三方库的许可协议?

但是,遗憾的是,如果您希望这些警告消失,并且更希望您的应用程序在未来的 Java 更新中正常工作,那么您必须这样做。事实是,如果您使用像 Netbeans 这样的 IDE,那么它已经重新打包并放弃您的第 3 方库 .jarsanyways。因此,您不会违反 IDE 尚未违反的任何规则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 7 明显的安全变化 的相关文章

随机推荐