Search code examples
javasecurityjava-web-start

Will Deployment Rule Sets Allow JNLP To Run Without Signing Jars?


When I run my JNLP it keeps failing with "com.sun.deploy.net.JARSigningException: Found unsigned entry in resource: http://......"

My JNLP is generated on the fly by a class and ends up looking like this at the top:

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

I created a very broad ruleset.xml

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

Added it to a jar

jar -cf DeploymentRuleSet.jar ruleset.xml

Signed it with my company keystore

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

Then copied it to

%SYSTEMROOT%\Sun\Java\Deployment

According to the docs I should be able to run without signing my jars so why am I getting this error?

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

There are ~250(!) so I'd rather not be signing them all the time as it slows down my build process considerably.

Using JRE version 1.7.0_71-b14.


Solution

  • You need to import the certificate under JAVA > Security > Certificates > Signer CA