【发布时间】:2014-03-19 21:13:23
【问题描述】:
我们正在使用 java web start 来启动一个 GUI java 程序。我们签署所有罐子,包括第三方罐子。我们还将 Permissions: all-permissions 属性添加到我们所有 jar 的清单中,但没有添加到第三方 jar 中。
在 java 7u51 中,我们仍然会收到“此应用程序将被阻止”的警告。
我尝试在使用 -verbose 启动 web 后查看 java 控制台日志,但没有看到任何帮助我解决此问题的内容。
【问题讨论】:
-
我删除了我的答案,但我想解决您的最后一条评论:“我们正在正确签署 jars。证书尚未过期。这个错误出现在 7u45 中。我们添加了权限:所有-permissions 属性到我们所有的清单,这使得对话框不出现(这是 oracles 建议的“修复”)。然后使用 7u51,我们再次得到对话框“好吧,对话框说你的 .jar 文件不包含
Permissions属性。因此,我会重新检查以确保您的主 .jar 和库 .jar 包含该属性并且它与您的 .jnlp 文件匹配。 -
问题是:“我们还在所有 jar 的清单中添加了 Permissions: all-permissions 属性,但没有添加到第三方 jar 中。”您还需要将该属性添加到您的第三方库中。当你说“我们所有的 .jars”时,你把我吓跑了。但是,可以,将属性添加到您的第三方 .jars。
-
据我所知,不应该将此属性添加到除主 jar 之外的任何 jar 中。我找不到任何明确的答案,因为文档太糟糕了。不得不修改第三方 jar 是不合理的。实际上,我们尝试这样做只是为了排除这种情况,并将属性添加到我们提供的每个 JAR 中。仍然有这个对话框。此外,有些罐子你根本不能修改清单。即 Bouncy Castle 罐子,因为它们要求它们保持由原始签名者签名。这让我相信这是一个错误:bugs.openjdk.java.net/browse/JDK-8027821
-
我很困惑。一方面,您说您将属性添加到每个 jar,但另一方面您说某些 .jar 不能修改?你说的不能是指法律上的不能吗?如果这就是你所说的,我完全同意。如果您在此处阅读我对类似 SO 问题的回答:stackoverflow.com/questions/20759765/…,您会发现我完全支持您。 Oracle 要求开发人员修改第 3 方库,从而使他们处于危险境地。当然,如果您使用 IDE 来构建您的应用程序,那么无论如何您都在修改它们。
-
我站在你这边。我认为他们要求您更改库 .jar 是荒谬的,但是(我不会与您争论)这是摆脱此安全警告的唯一方法。
标签: java security java-web-start jnlp