我想配置 jdk,这样如果我要执行 java -jar myjar.jar
,那么 myjar
仅在已签名(由特定签名者)的情况下才会执行。我发现this答案但我不确定编辑策略文件是否是解决方案。根据我的理解,阅读here ,似乎您只能授予/限制应用程序读取/写入某些目标的权限,而不能授予/限制应用程序本身运行的权限。例如,使用策略文件文档中的示例,我可以添加
grant signedBy "Duke" {
permission java.io.FilePermission "/tmp/*", "read,write";
};
允许“Duke”签名的 jar 读取/写入 /tmp/
中的文件,但我无法添加限制,以便只有由“Duke”签名的 jar 可以首先运行。
我知道可以使用 jarsigner -verify
来验证 jar,但我希望有一个配置 Java 运行时本身的解决方案。有没有办法使用策略文件或其他方式来实现此目的?
谢谢
最佳答案
据我所知,使用安全策略这是不可能的。禁止 JAR 的执行在当前的 Java 安全概念中没有意义。
但是,您可以扩展 Java 的安全管理器类来实现您想要的功能。但请注意,这可能不是一个简单的任务。
关于java - 仅当 jar 已签名时才允许运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54011270/