Java jar 可以使用 JDK jarsigner 工具进行签名。这与策略工具结合使用,似乎只允许您在运行时向 jar 添加权限。我想要一个默认的“撤销运行访问权限”。是否有可能让java以这样的方式进行白名单,只允许运行由一组特定证书签名的jar文件?
据我了解,这是您可以控制的计算机上。使用
java -Djava.security.manager YourApplication
启动应用程序时。这将安装默认的安全管理器,可以通过以下方式进行配置政策文件 http://docs.oracle.com/javase/6/docs/technotes/guides/security/PolicyFiles.html。策略文件允许配置每个签名者或每个代码库的权限
grant signedBy "me" {
permission java.io.FilePermission "/home/me/*", "read,write";
};
在各种可能的权限之间,我目前没有看到“完全运行”的权限,但似乎您可以完全禁用网络和文件系统访问。
如果您有可能运行自己的外部应用程序作为决策者(启动或不启动),您可以验证代码中的签名为已经讨论过了 https://stackoverflow.com/questions/1374170/how-to-verify-a-jar-signed-with-jarsigner-programmatically.
另外,您可以使用 -verify 开关编写 jarsigner 的包装器,如文档所示here http://docs.oracle.com/javase/tutorial/security/toolfilex/rstep2.html:
jarsigner -verify -keystore mystore hackerApplication.jar
并使用一些类似 bash 的包装器捕获输出中的“smk”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)