当我运行我的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。
答案 0 :(得分:1)
部署规则集是否允许JNLP在不签名的情况下运行?
我从未听说过“部署规则集”,但如果有任何东西允许运行未签名的Jar(用户手动调整控制台中的安全级别),则会出现安全漏洞。
答案 1 :(得分:0)
您需要在JAVA&gt;下导入证书;安全&gt;证书&gt;签名者CA
答案 2 :(得分:0)
您的规则似乎无效。您可以通过打开Java控制面板并在安全选项卡上单击&#34;查看活动的部署规则集&#34;来进行检查。
不允许遗留id以进行权限运行。根据{{3}}:&#34;为了确保规则集处理所有RIA,您可以提供匹配任何未与先前规则匹配的RIA的最终规则。此规则的操作必须是阻止或默认。&#34;
要允许未签名的应用程序,您应该列出它的位置。您还应该更改jnlp文件的href属性以包含相同的位置。我已经尝试过这个用于我们的应用程序,但遗憾的是我仍然收到错误&#34;在资源中找到未签名的条目...&#34;。根据对Oracle's documentation on Deployment Rule Sets的回复,它应该有效......