Java 小程序安全警告“JAR 文件清单不包含权限属性”是什么意思?

2022-09-01 23:50:03

我有一个Java小程序,它需要访问客户端的本地文件系统。我已经为自己创建了一个简单的证书(它不是由Verisign,Commodo,...认证的)。我使用以下模板对jar进行了签名:

del \Users\koalabruder\.keystore
"C:\Program Files\Java\jdk1.7.0_45\bin\keytool" -genkey -alias %1 -keypass kp -dname "cn=inin" -storepass ab987c
"C:\Program Files\Java\jdk1.7.0_45\bin\jarsigner.exe" -storepass abc -keypass kp %2 %1
"C:\Program Files\Java\jdk1.7.0_45\bin\keytool" -export -storepass abc -alias %1 -file %3

简单的安全警告,即我“没有签名证书”已经存在多年,这不是我的问题。

我的问题是,安全警告发生了变化,因为最近的Java更新之一:

此应用程序将在将来的 Java 安全更新中被阻止,因为 JAR 文件清单不包含“权限”属性。有关详细信息,请联系发布者。

这是什么意思?我该如何修复它?我必须购买证书吗?我是否必须修复清单(清单。MF)?什么是“权限”属性?

更新:这是我的清单从jar文件

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Application-Name: inin 
Permissions: all-permissions 
Created-By: 1.7.0_45-b18 (Oracle Corporation)

Name: net/inin/transfer/ul/UlPanel.class
SHA-256-Digest: asdfasddddddddddddddddddddddddddddddddd=

答案 1

您无需购买证书,只需修复清单文件即可。

添加此行:

permissions: all-permissions

或者,如果您只需要有限的访问权限,则为以下行:

permissions: sandbox

答案 2

我遇到了同样的问题,更改我的清单没有解决它。

最后,我发现,我引用了一个库,它装在自己的罐子里,有自己的清单。我正在使用没有权限和代码库的jar文件的副本。

因此,如果您引用了除 JRE 系统库之外的任何库,请检查 jar 文件中的清单(例如,使用 7zip 打开它)。如果它不包含这些属性,您可以:

  • 检查,如果制造商有新版本。他现在可能已经注意到了这个问题。
  • 解压缩 jar 文件,编辑清单并再次进行 jar,或者
  • 将库与您自己的 jar 合并。

对于最后两个,请检查发布库所依据的许可证。也许你不被允许以这种方式操纵产品。


推荐