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