【发布时间】:2014-01-12 15:06:49
【问题描述】:
随着最近对 Java 7s 安全检查的更改,我正在更新我们的 webstart 应用程序以允许它在没有警告的情况下运行。
我们的 webstart 应用程序由许多 jar 文件组成,其中只有少数是我们开发的,我们使用了许多 3rd 方 jar 文件(log4j、swingx、...)
我们之前的设置使用了自签名证书,我们用它签署了所有 jar 文件。 我们现在已经从适当的 CA 购买了签名证书。
到目前为止我采取的步骤是:
- 解压jar文件
- 从所有 jar 文件中删除旧证书(从清单中删除 *.DSA *.SF *.RSA 和哈希)
- 重新打包jar文件
- 将权限、代码库、应用程序名称属性添加到包含我们的主类的 jar 文件中。
- 使用新密钥签署 jar 文件
在带有 Java 7 u45 的机器上的 webstart 中运行它不会出现警告对话框,这很棒。
但是,查看 java 控制台,我看到它警告有关其他 jar 文件的所有 jar 缺少 Permission、Codebase、Application-Name 属性。我是否也应该将这些属性添加到每个 jar 文件中?
我已经对重新打包 3rd 方 jar 文件感到不安,但现在不得不添加清单属性让我觉得我错过了一些东西。
所以,改变清单,还是别的什么? 谢谢,圣诞快乐
编辑: 感谢您提供有用的回复,我只是想用我已实施的解决方案的一些细节来更新它。
我采取以下步骤重新打包应用程序所需的每个 jar 文件。
- 解压jar文件到一个临时目录
- 从 META-INF 中删除 *.DSA *.RSA *.SF
- 从 META-INF/MANIFEST.MF 中删除以
开头的行
- SHA-256-摘要
- SHA1-摘要
- 权限
- 代码库
- 应用程序名称
- 在 META-INF/MANIFEST.MF 中插入行
- 权限:所有权限
- 代码库:*
- 应用程序名称:我的应用程序名称
- 确保 MANIFEST.MF 中的所有行尾都适合我的系统 (dos2unix)
- 使用指定的新清单重新创建 jar 文件
- 使用当前代码签名证书对 jar 文件进行签名
希望有帮助
【问题讨论】:
-
“我已经对重新打包 3rd 方 jar 文件感到不安,但现在不得不添加清单属性让我觉得我错过了一些东西。” API?
-
Andrew,你是说现在是这样,重新打包jar文件是现在应该这样吗?谢谢。
-
“这是现在的样子,重新打包jar文件是现在应该做的”是的。
标签: java jar java-web-start