【问题标题】:java web start jnlp Application is Blocked by Java Security on apache https web serverjava web start jnlp 应用程序被 apache https Web 服务器上的 Java 安全性阻止
【发布时间】:2016-01-02 21:30:36
【问题描述】:

我在安全的 apache http 服务器上有一个 JNLP/Web Start 应用程序(没有 Tomcat - 我需要它吗?)。它已使用我由 java 生成的免费密钥库进行签名。当我启动它时,我收到以下错误:

为安全起见,应用程序现在必须满足 High 或者 非常高的安全设置,或者是例外站点列表的一部分, 被允许运行。

我已将该位置添加到异常站点列表(使用尾部斜杠以包含所有子目录和文件),但我仍然收到此错误。

当然它不会在 Chrome 中工作。我尝试从命令行启动 jnlp 文件,从 Firefox 和 Internet Explorer 启动 URL,它们都给了我同样的错误。

我已获得证书并签署了我的 jar 文件。我已经在 jar 文件上运行了 jarsigner -verify,一切看起来都井井有条(但我不确定我在寻找什么):

 jarsigner -verify -verbose -keystore garageMonitor.jks ../GarageMonitorFinder.jar

s k     1561 Fri Oct 09 18:19:48 UTC 2015 META-INF/MANIFEST.MF
        1425 Fri Oct 09 18:19:50 UTC 2015 META-INF/8D95B904.SF
        8149 Fri Oct 09 18:19:50 UTC 2015 META-INF/8D95B904.RSA
           0 Fri Oct 09 14:13:14 UTC 2015 META-INF/
           0 Fri Oct 09 14:13:14 UTC 2015 com/
           0 Fri Oct 09 14:13:14 UTC 2015 com/thompco/
           0 Fri Oct 09 14:13:14 UTC 2015 com/thompco/garagemonitor/
smk      107 Fri Oct 09 14:13:12 UTC 2015 META-INF/INDEX.LIST
smk     1128 Fri Oct 09 14:13:14 UTC 2015 com/thompco/garagemonitor/GarageMonitor.class
smk     2320 Fri Oct 09 14:13:14 UTC 2015 com/thompco/garagemonitor/GarageMonitorBroadcastClient.class
smk     3631 Fri Oct 09 14:13:14 UTC 2015 com/thompco/garagemonitor/GarageMonitorFinder.class
smk      903 Fri Oct 09 14:13:14 UTC 2015 com/thompco/garagemonitor/GarageMonitorGui$1.class
smk      903 Fri Oct 09 14:13:14 UTC 2015 com/thompco/garagemonitor/GarageMonitorGui$2.class
smk      903 Fri Oct 09 14:13:14 UTC 2015 com/thompco/garagemonitor/GarageMonitorGui$3.class
smk      822 Fri Oct 09 14:13:14 UTC 2015 com/thompco/garagemonitor/GarageMonitorGui$4$1.class
smk      954 Fri Oct 09 14:13:14 UTC 2015 com/thompco/garagemonitor/GarageMonitorGui$4.class
smk     8192 Fri Oct 09 14:13:14 UTC 2015 com/thompco/garagemonitor/GarageMonitorGui.class

  s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar verified.

当我尝试运行 jnlp 文件时,我仍然收到上述错误。有没有办法解决这个问题?

有没有办法解决/调试这个问题?

【问题讨论】:

  • 我在 Debian 系统上从 firefox 访问了相同的 URL(和 JNLP 文件),它运行良好,所以问题肯定出在 Windows 上,但我不知道我做错了什么我的配置。
  • 我尝试将我的 windows 版本的 java 降级以匹配 Debian 上的版本,但它仍然不起作用。
  • 所以我可能在清单中发现了一些问题(代码库不正确等),但在进行更改后,我看到了同样的问题。任何建议在哪里看都会很棒。
  • 好吧,在拔掉剩下的头发后,我偶然发现了一根线。原来如果你去你的java控制面板和设置...取消选中“在我的电脑上保留临时互联网文件”。应用更改,重新启动您的浏览器,然后再试一次,如果您从命令行运行它...但是,如果您从 Web 托管位置尝试它,它不会。事实上,现在我又试了一次,它甚至不再从命令行工作了:-(

标签: java apache java-web-start jnlp


【解决方案1】:

好的,在拔掉剩下的头发后,我偶然发现了this thread。原来你:

转到您的 Java 控制面板和设置...取消选中“保留临时” 我电脑上的互联网文件”。应用更改并重试您的 .jnlp

有效!嗯,它做到了。一次。

我随后发现这个来自 Andrew Thompson(无关联)的非常有用的 JNLP 调试器,名为 JaNeLa。它最初托管的网站已关闭,但 AlBundy(我们以为他只是一个鞋推销员)把它放在了 github here 事实证明它非常易于使用:只需运行 jar 并将其指向 URL 或文件(URL 更好。)

【讨论】:

  • 为我工作。谢谢。
【解决方案2】:

对我来说,在迁移到 Java 8 之后,我看到了同样的错误。我的解决方案是添加:

Permissions: all-permissions

到 jar 清单。有关详细信息,请参阅 this oracle blogPermissions Attribute 上的信息。 (似乎 Java 7 需要 Permissions 属性,但直到我开始使用 Java 8 才成为问题。)

【讨论】:

    猜你喜欢
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多