莫雷纳签署了罐子,导致我的罐子出现问题

时间:2012-08-08 05:53:33

标签: java security jar applet digital-signature

我正在使用Morena API,以便通过Java使用扫描仪。然而,Morena jar已经使用不同的密钥签署,然后是我项目的其余部分。当我尝试运行我的applet并给出以下运行时异常时,这会导致问题:

"Jar resources in JNLP file are not signed by the same certificate"

我正在为我的项目使用netbeans,那么我怎样才能强迫Morena使用我的签名而不是随附的签名呢?

由netbeans自动生成的JNLP文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp href="launch.jnlp" spec="1.0+">
<information>
    <title>ArFile</title>
    <vendor>Matthew Pigram</vendor>
    <homepage href="http://www.allcarecomputerservices.com"/>
    <description>ArFile is designed to allow users to effectively manage documents through a convenient cloud storage facility</description>
    <description kind="short">ArFile</description>

</information>
<update check="always"/>
<security>
    <all-permissions/>
</security>
<resources>
`<j2se java-vm-args="-Djava.security.policy=applet.policy" version="1.6+"/>
<jar href="ArFile.jar" main="true"/>    
<jar href="lib/commons-codec-1.4.jar"/>
<jar href="lib/jdom.jar"/>
<jar href="lib/security-1.1.jar"/>
<jar href="lib/emcesu.jar"/>
<jar href="lib/commons-io-2.3-javadoc.jar"/>
<jar href="lib/commons-io-2.3-sources.jar"/>
<jar href="lib/commons-io-2.3-test-sources.jar"/>
<jar href="lib/commons-io-2.3-tests.jar"/>
<jar href="lib/commons-io-2.3.jar"/>
<jar href="lib/jodconverter-core-3.0-beta-4.jar"/>
<jar href="lib/juh-3.2.1.jar"/>
<jar href="lib/jurt-3.2.1.jar"/>
<jar href="lib/ridl-3.2.1.jar"/>
<jar href="lib/unoil-3.2.1.jar"/>
<jar href="lib/mail.jar"/>
<jar href="lib/log4j-1.2.16.jar"/>
<jar href="lib/morena.jar"/>
<jar href="lib/morena_windows.jar"/>
</resources>
    <applet-desc height="604" main-class="com.allcare.arfile.ArFileJApplet" name="ArFile" width="756">     
    </applet-desc>
</jnlp>`

还有这一个:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="${jnlp.codebase.value}">
    <information>
        <title>jnlpcomponent1</title>
        <vendor>JARSIGNI</vendor>
    </information>
    <security>
        <all-permissions/>
    </security>
    <resources>
        <jar href="lib/morena.jar" download="eager"/>
        <jar href="lib/morena_windows.jar" download="eager"/>
    </resources>
    <component-desc/>
</jnlp>

2 个答案:

答案 0 :(得分:1)

这是Java Web Start确保客户端下载的jar不会受到损害的方式。这是一个安全功能。

您可以尝试使用您的证书而非默认证书签署Morena jar。

使用keytooljarsigner即可签署广告。

编辑:从Java Web Start 1.5.0开始,您可以对jar进行多次签名,在另一个现有证书链上添加代码签名证书

http://docs.oracle.com/javase/1.5.0/docs/guide/javaws/developersguide/faq.html#221

因此,您可以使用您的签名签署Morena jar,这将解决问题。

答案 1 :(得分:1)

以下是解决此问题的两种方法:

  1. 将Morena API Jars移动到JWS扩展中。这将是最好的方式,因为它可以声称它自己的权限级别,并在其他应用程序中重用。
  2. 从Morena Jars中剥离数字签名,并使用您自己的证书对其进行签名。