仅在签名的jar允许运行

时间:2019-01-02 18:20:39

标签: java keystore jarsigner jar-signing

我想配置jdk,以便如果我要进行java -jar myjar.jar,则myjar仅在已被(由特定签名者签名)时执行。我找到了this的答案,但是我不确定编辑策略文件是否是解决方案。根据我对here的理解,似乎您只能授予/限制应用程序读取/写入某些目标的权限,而不能授予/限制应用程序本身运行的权限。例如,使用策略文件docs中的示例,我可以添加

  grant signedBy "Duke" {
      permission java.io.FilePermission "/tmp/*", "read,write";
  };

允许“杜克”签名的jar读取/写入/tmp/中的文件,但我无法添加限制,以使“杜克”签名的只有个jar可以在第一名。

我知道可以使用jarsigner -verify来验证jar的能力,但是我希望有一个配置Java运行时本身的解决方案。是否可以使用策略文件或其他方法来实现这一目标?

谢谢

1 个答案:

答案 0 :(得分:0)

据我所知,使用安全策略是不可能的。在当前的Java安全概念中,禁止执行JAR毫无意义。

但是,您可以扩展Java的安全管理器类以实现所需的功能。但是请注意,这可能不是一个简单的任务。