java - 仅当 jar 已签名时才允许运行

标签 java keystore jarsigner jar-signing

我想配置 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/

相关文章:

java - 两个应用程序使用相同的 keystore 时,SSL握手异常

java - 如何删除 java keystore 个人/私有(private)密码

java - 无法找到或加载主类 sun.security.tools.jarsigner.Main

java - 带有 https tsa 的 JDK 1.7 jarsigner 不再有效

android - 使用 JarSigner 以编程方式验证 APK

java - Java 异常/错误处理如何工作?线程 "main"java.lang.Error : 中出现异常

java - 无法获得R语言system2命令结果

JMeter 4 - 无法在 Windows 7 中执行 jmeter-server

java - 为什么我的 @SuppressWarnings ("unchecked") 被忽略?

接受 int 值直到用户输入零,然后找到最小正整数的 Java 程序