java - 限制 java 只执行签名的 jar?

标签 java security code-signing whitelist jar-signing

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/

相关文章:

java - GridView : How can I get rid of extra space from my GirdView object?

java - 在 NetBeans 中组织导入

java - 如何在没有 EventListener 的情况下从 Firebase 检索数据?

c# - 即使我更改了主机上的时钟,也能获得真实的 DateTime (c#)

java - 我可以签署 Java 类文件吗

java - 将字符串 Java 中的阿拉伯逗号替换为英文

java - DockerFile : RUN Pass arguments

ios - 与 KeyChain 相比,NSUserDefaults 的安全性如何

Xcode 4.1 代码签名问题

code-signing - 代码签名究竟如何帮助软件发行商?