21

我刚刚将 JRE 升级到 7u45,我的小程序在启动时收到一条警告消息,说“此应用程序将在未来的 Java 安全更新中被阻止,因为 JAR 文件清单不包含权限属性。” 然后我将以下两个属性添加到我的小程序 Jar 文件(自签名)的清单中:

Permissions: all-permissions
Codebase: *

但是警告信息并没有消失。我怀疑我错过了其他一些东西,但经过数小时的研究后无法找到它们。其他人知道解决方案吗?

更新

使用有效证书签名的受信任小程序也无法运行。黄色警告消息不会出现,但会显示另一个错误对话框,说明小程序被安全设置阻止,而在 Java 控制面板中更改安全级别或其他内容无济于事。

4

12 回答 12

6

我也有同样的问题。我使用明确的代码库对其进行了测试,但它继续出现警告“缺少权限清单属性”。

还尝试将权限更改为“沙盒”,消息仍然出现,但小程序没有执行某些功能的权限。

编辑:

最后我找到了解决方案:manifest.mf

Manifest-Version: 1.0
Codebase: *
Permissions: all-permissions
Application-Library-Allowable-Codebase: *
Caller-Allowable-Codebase: *
Application-Name: AppName
Created-By: AppCreator

我希望这对你有帮助。

于 2013-10-16T16:03:10.173 回答
2

在花了一些时间编辑清单(查看如何使用 maven 配置清单)和所有这些 java 配置之后,我发现了它是如何工作的:

要使用 java 1.7+ 授予allPermissions,您需要编辑java.policy文件。

使用策略工具来做到这一点。在提示命令行:

policytool

请参阅 Oracle 教程:http ://docs.oracle.com/javase/tutorial/security/tour1/wstep2.html

打开浏览器虚拟机正在执行的正确策略文件。对我来说,它在:

C:\Program Files (x86)\Java\jre7\lib\security\java.policy

应该加载一些 CodeBase 列表。单击它进行编辑或:

添加条目

对于每个运行代码的位置,将CodBase留空,但如果需要,您可以将localhost或您的站点留空,对于未签名的 jars/applet ,可以将signedBy留空。单击Add Permission,然后选择AllPermissions
I have CodeBase <ALL>and itjava.security.AllPermission

然后保存!java.policy 并且应该得到成功消息。

完成后,您可以运行未签名的小程序并访问磁盘文件。

于 2014-09-17T16:22:44.430 回答
2


我也遇到了这个问题,我在我的应用程序中解决了这个问题,只需将证书添加为 java 控制中心下的“安全站点”。

错误消息(“应用程序将被阻止......权限属性”)非常具有误导性,它更像是一个通用错误消息,与 jar 中是否真的存在 Permissions 属性无关。这对我来说是一个错误,希望 java 将在下一个版本中修复它。

删除此错误消息的具体步骤:
1) javaws -viewer
2) 打开安全选项卡
3) 单击“管理证书”
4) 选择证书类型为“安全站点”
5) 添加应用程序证书。

于 2013-11-11T11:37:12.287 回答
1

在您的 Java 控制面板中,将安全级别更改为“非常高”,这样它将阻止小程序运行,因为它缺少必需的权限属性。运行您的应用程序,将抛出一个异常,它会告诉您哪个 jar 缺少该属性。

我的印象是,将 Permissions 属性添加到小程序的主 jar 就足够了,但我发现即使是辅助 jar 也会导致问题。我现在将 Permissions 属性添加到我所有的 jar 中。

希望这可以帮助某人。

于 2013-11-05T19:29:04.360 回答
1

将基本 URL 添加到 Java 控制面板的安全选项卡中的安全站点列表(检查除外),这使我的 vpn 再次启动:

对话框的屏幕截图(它是德语,对不起!)

于 2014-01-15T10:21:25.693 回答
0

来自“Java 平台组,产品管理博客”中 7u51(2014 年 1 月)中 RIA 的新安全要求:

自 7u51(2014 年 1 月 14 日)起,您的 RIA 必须更新。[...]

RIA 必须包含两件事:

  1. 来自受信任机构的代码签名。[...]

所以看起来使用自签名证书是这里的问题。

我认为很明显,自签名证书作为最终用户的介绍用处不大。

于 2013-10-16T17:50:55.927 回答
0

我在尝试打开 Dell iDRAC 虚拟控制台时遇到了同样的错误。如果您想以适当的方式消除警告,这无济于事。但是,如果您只想运行应用程序,那么对我来说,解决方案是打开Java Control Panel并在Security选项卡中将Security Level设置为Medium

之后,我可以在接受警告后运行应用程序。

于 2014-02-13T13:12:13.103 回答
0

我不知道我的原始答案(已删除)是错误的。清单中的 Permissions 属性不应在本地小程序中被忽略,因此,这是一个错误。

7u45 发行说明中描述了类似的已知问题。这一定是相关的。

至于原来的问题: Codebase: * ?

Codebase: localhost

它适用于http://localhost并且不矛盾file://localhost/C:/folder,这(在 Windows 上)是正确的 JNLP 代码库语法。清单中的 Codebase 属性允许多个条目。添加localhost肯定不会有不良影响。

更新:

Manifest-Version: 1.0
Implementation-Title: MyApplet
Implementation-Version: applet build
Built-By: bnicer
Application-Name: Slide Show
Created-By: 1.7.0_45-b18 (Oracle Corporation)
Caller-Allowable-Codebase: *
Implementation-Vendor: MyFirm
Ant-Version: Apache Ant 1.9.2
Trusted-Library: true
Application-Library-Allowable-Codebase: *
Built-On: 8 November, 2013 @ 13:40:10 GMT
Trusted-Only: true
Permissions: all-permissions
Main-Class: jtss
Codebase: www.mydomain.co.uk localhost 127.0.0.1 192.168.2.2

我相信在 7u45 下离线运行一个小程序,无论你在清单中放什么,都会出现问题,这是非常不幸的。

据我所知,将.java.policy文件添加到本地目录的旧方法同样没有意义,这也是不幸的。

更多信息:

(关于错误?)

如果小程序已签名,您可以选择在 Java 控制面板中导入公共证书(.csr、.p12、.cer):Security > Manage Certificates > User > Signer CA.过去导入证书可确保: A) 小程序发布者是已知的。B) 在浏览器中运行小程序之前的安全弹出窗口将被删除。

  • Web Start 应用程序,同上。

不同之处在于现在(7u45):A)发布者是已知的。B)您收到“...清单不包含权限属性”警告。

  • 仅限本地小程序。

在警告之后,根据我的经验,小程序将无法运行。

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at sun.plugin2.applet.Plugin2ClassLoader.defineClassHelper(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.access$100(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    ... 14 more
Caused by: java.lang.NullPointerException
    at sun.plugin2.applet.Plugin2ClassLoader.loadAllowedCodebases(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.getPermissions(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.getPermissions(Unknown Source)
    at java.security.SecureClassLoader.getProtectionDomain(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    ... 18 more

一种解决方法,但绝不是解决方法,是从Signer CA存储中删除证书。在删除证书时(绝望地,作为最后的手段)签名的本地小程序运行如下:A)未知的发布者等。B)您会看到一个安全对话框,以及缺少权限属性警告。

  • 以上均不适用于在线小程序。

随意发表评论。

于 2013-11-07T04:29:44.720 回答
0

运行 java 卸载小程序以删除旧版本的 java。 http://java.com/en/download/uninstallapplet.jsp

于 2014-01-21T17:37:07.797 回答
0

如果您碰巧将 webstart 与基于版本的协议一起使用,则似乎存在一个错误,该错误会导致 Permissions 属性警告,而不应如此。一旦我们从 jnlp 中删除了版本属性,并从 jar 文件名中删除了版本字符串,权限属性警告就消失了。

编辑: 我找到了讨论此事的论坛帖子: https ://forums.oracle.com/thread/2594060 。

于 2013-11-11T22:26:23.140 回答
0

在 1.7.0_u45 中,您可能需要同时设置 Permissions 和 Caller-Allowable-Codebase 属性:

Caller-Allowable-Codebase: * localhost 127.0.0.1
Permissions: all-permissions

请参阅此图,它解释了安全弹出窗口

我正在设置我的清单属性,如下所示:

Application-Name: MyAppName
Implementation-version: %VERSION% 
Permissions: all-permissions
Caller-Allowable-Codebase: * localhost 127.0.0.1
Application-Library-Allowable-Codebase: *
于 2013-11-08T09:34:56.587 回答
-2

我将我的 Java 安全设置为中等,现在可以访问该程序。

于 2014-02-20T22:03:12.753 回答