限制java只执行签名的jar?

时间:2013-01-13 15:12:14

标签: java security code-signing whitelist jar-signing

可以使用JDK jarsigner工具对Java jar进行签名。这与policytool一起,似乎只允许您在运行时向jar添加权限。我希望默认"撤销运行权限。"是否有可能让java以白名单的方式进行白名单,只允许运行由某组证书签名的jar文件?

3 个答案:

答案 0 :(得分:4)

据我所知,这是您可以控制的计算机上的。使用

 java -Djava.security.manager YourApplication

启动应用程序时。这将安装可以通过policy files配置的默认安全管理器。策略文件允许按照签名者或每个代码库配置权限

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

在各种可能的权限之间,我目前看不到“完全运行”的权限,但似乎你可以完全禁用网络和文件系统访问。

如果您有可能运行自己的决策者外部应用程序(启动或不启动),您可以将代码中的签名验证为already discussed

此外,您可以使用-verify开关在jarsigner周围编写一个包装器,如文档here所述:

jarsigner -verify -keystore mystore hackerApplication.jar 

并使用类似bash的包装器捕获输出中的“smk”。

答案 1 :(得分:1)

对于自7u10以来Oracle JRE上的Java PlugIn和WebStart,Java控制面板中有一个相关的自定义安全设置。在“安全JRE版本上不受信任的应用程序的操作”下,选择“不运行”。请参阅Setting the Security Level of the Java Client

答案 2 :(得分:0)