Java jar 可以使用 JDK jarsigner 工具进行签名。这与 policytool 一起,似乎只允许您在运行时向 jar 添加权限。我想要一个默认的“撤销运行权限”。是否有可能使 java 以仅允许运行由特定证书集签名的 jar 文件的方式进行白名单?
最佳答案
据我了解,这是在您可以控制的计算机上。使用
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”。
关于java - 限制 java 只执行签名的 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14304771/