7

因此,我们安装了 Java 7u21 版本,该版本旨在加强小程序的安全性。不幸的是,它太紧了,以至于我们的小程序不再运行。不好。

有趣的是,它只是在我们使用 JWS 操作时才停止工作。如果我们从标准网页将其作为标准小程序启动,则一切正常。

在 JWS 模式下,我们至少会在反射和java.lang.Thread.setDefaultUncaughtExceptionHandler.

证书看起来不错。

Oracle 的发行说明没有提供与 JWS 相关的任何内容。

因此,我向社区提出的问题是:是否有人对此有想法或(甚至更好)解决方案?

与给定建议/评论相关的其他信息:

该小程序由全球数百个第三方客户端运行,因此很遗憾无法更改安全策略。客户可以重现该问题。但是,我可以确认更改策略文件可以解决问题。

当我从 Eclipse 启动的 Tomcat 运行小程序时(当然没有签名的小程序),它会按预期在浏览器中显示警告通知。作为一个容易上当受骗的人,我允许小程序运行,因为它是从我自己的开发环境中启动的。这仍然会导致安全失败。

我已经考虑过这是否是 Java 中的错误,但我想看看是否有其他人看到同样的问题。我想我们都知道修复错误的 Oracle 周转时间并不总是最好的......

感谢您的任何意见。


非常感谢托尼,你的建议让我能够在 7u21 中正确地创建小程序;我认为这是向前迈出的一步,因为我正在通过浏览器签署和唤醒许多小程序,这些超过 7u21。我今天不早点做。但是我被困了几个小时,事实上我还没有从我拥有的遗留应用程序中唤醒我的第一个第三方小程序(即在 JVM 1.6 或更早版本中工作正常)。

涉及的小程序,我对它们进行了签名,但我总是收到错误:SecurityException - “Bad applet class name”。我有一些小程序和调用它们的 html 代码,问题是我的链中的第一个小程序(调用链中的任何其他小程序)的行为可能不像其他已签名的小程序正确执行(这些小程序来自用于培训的 java 网站),这个简单的第 3 方小程序不会运行并抛出上述异常。我的第三部分小程序我不知道它在内部做什么。抱歉,我可能会要求没有源代码就不容易解决的特殊情况,但是,请相信告诉我任何想法,不管它是什么。

此致

4

4 回答 4

4

这是解释它的页面。

混合代码上的 Oracle 代码

你需要做的是把你所有的 jars 都拿到清单文件中的新 TrustedLibrary 行。对我来说,这意味着重新编译旧代码。您可能只需解开当前的 jar 包,然后重新打包,包括 TrustedLibrary 行。

您还必须签署所有代码。不仅仅是小程序。这意味着如果您有 3 个罐子,那么所有 3 个罐子中的所有代码也必须签名。

于 2013-04-19T00:18:40.777 回答
4

我的同事破解了它。给波兰人喝伏特加有时可以产生所需的灵感。:-)

无论如何,现在发送到小程序的 jnlp 信息中似乎需要安全标记(返回的内容类型设置为 application/x-java-jnlp-file)。

通过添加

<security> 
    <all-permissions/>
</security>

有用。

希望这可以帮助。

于 2013-05-02T09:06:09.967 回答
1

Java SE 文档的安全页面中的以下引用是相关的:

“标准的 Java 策略文件可用于增强授予不受信任的应用程序的权限。除了$JRE_HOME/lib/security/java.policy$USER_HOME/.java.policy(由所有 Java 程序使用)之外,Java Web Start 和 Java 插件加载的应用程序和小程序加载两个额外的策略文件,其位置可以通过部署配置属性进行配置:deployment.user.security.policy 和 deployment.system.security.policy。”

检查这些位置的策略文件。

于 2013-04-18T13:00:39.150 回答
1

对所有使用未签名小程序的开发人员的附加提示。上周在 JAX2013 大会上,来自 Oracle 的 Wolfgang Weigand 提到,在 2013 年 10 月 Java 7 发布之后,将只有最高级别的小程序安全滑块,即只有使用受信任(非自签名)证书签名的小程序才能运行. 到目前为止,该信息尚未在 Oracle 官方网站上发布。

由于 Java 平台的最新安全更改,上面引用 JAVA6 安全页面的答案可能有点过时

于 2013-04-29T21:00:50.103 回答