部署规则集是否允许JNLP在不签名的情况下运行?

时间:2014-11-14 22:41:35

标签: java security java-web-start

当我运行我的JNLP时,它仍然失败“com.sun.deploy.net.JARSigningException:在资源中找到未签名的条目:http:// ......”

我的JNLP由一个班级动态生成,最终在顶部看起来像这样:

<jnlp spec="1.0+" codebase="http://myhost.com:8080/webstart" href="jnlp?app=com.mycompany.LaunchWebstart">

我创建了一个非常广泛的ruleset.xml

<ruleset version="1.0+">
  <rule>
    <id />
    <action permission="run" />
  </rule>
</ruleset>

将其添加到jar

jar -cf DeploymentRuleSet.jar ruleset.xml

与我的公司密钥库签名

jarsigner DeploymentRuleSet.jar <alias> -keystore <path-to-keystore> -sigfile filesig -storetype <store-type>

然后将其复制到

%SYSTEMROOT%\Sun\Java\Deployment

根据docs,我应该可以在不签署我的罐子的情况下运行,为什么我会收到此错误?

permission - Action taken. The following values are valid:

run - The following types of RIAs are allowed to run without prompts:
    Signed with a valid certificate from a trusted certificate authority
    Signed with an expired certificate
    Self-signed
    Unsigned
    Missing required JAR file manifest attributes

有~250(!)所以我不想一直签名,因为它会大大减慢我的构建过程。

使用JRE版本1.7.0_71-b14。

3 个答案:

答案 0 :(得分:1)

  

部署规则集是否允许JNLP在不签名的情况下运行?

我从未听说过“部署规则集”,但如果有任何东西允许运行未签名的Jar(用户手动调整控制台中的安全级别),则会出现安全漏洞。

答案 1 :(得分:0)

您需要在JAVA&gt;下导入证书;安全&gt;证书&gt;签名者CA

答案 2 :(得分:0)

您的规则似乎无效。您可以通过打开Java控制面板并在安全选项卡上单击&#34;查看活动的部署规则集&#34;来进行检查。

enter image description here

不允许遗留id以进行权限运行。根据{{​​3}}:&#34;为了确保规则集处理所有RIA,您可以提供匹配任何未与先前规则匹配的RIA的最终规则。此规则的操作必须是阻止或默认。&#34;

要允许未签名的应用程序,您应该列出它的位置。您还应该更改jnlp文件的href属性以包含相同的位置。我已经尝试过这个用于我们的应用程序,但遗憾的是我仍然收到错误&#34;在资源中找到未签名的条目...&#34;。根据对Oracle's documentation on Deployment Rule Sets的回复,它应该有效......