java如何向代码签名JAR添加权限属性?
我有一个jar文件,它是代码签名的。当我尝试使用JavaWebStart启动应用程序时,我收到一条警告,说明清单中缺少Permissions
attibute
我从META-INF文件夹中删除了*RSA
和*SH
文件,并将以下属性添加到清单中:
- 权限:所有权限
- 代码库:*
- 申请名称:申请
然后,我使用jarsigner对jar文件进行了签名。当我尝试启动应用程序时,会收到一条错误消息,说明由于安全设置,应用程序被阻止。将安全设置更改为medium
后,我可以启动应用程序,但发布者未知
我能做些什么,这样出版商就不会不为人知了
# 1 楼答案
这个主题的完整答案是关于Java的新安全限制(因此,这取决于您的版本,在webstarted应用程序中,也取决于客户端的版本)
以this link为起点
不管怎样,从你的描述和提问来看,基本上有两种方式可以让出版商“不是未知的”
a)使用“受信任的发行人”。这意味着,从已知(Java)证书颁发机构获取代码签名证书。 这也意味着,在许多情况下,从他们那里购买(您可以探索一些不用于生产的开发选项)
当你拥有这样一个证书时,你会重复签名过程,如果你选择Java自带的CA(例如:Thawte、Symantec/Verisign等),你作为签名者将被“知晓”
b)据我所知,您使用的是自签名证书
在这种情况下(有点麻烦和不安全),您可以将自签名CA证书安装到正在执行的JRE信任存储(keystore)中。为此,您应该使用keytool java工具,并对PKI术语有一点经验。 这种方法的最大缺点是,这需要在客户端平台上进行操作(编写文件等),即使是一次性操作,通常也不可行(除非是可管理/限制的区域,如内部网)