【问题标题】:Morena signed Jars causing problems with my Jars莫雷纳签署了罐子,导致我的罐子出现问题
【发布时间】:2012-08-05 04:52:25
【问题描述】:

我正在使用 Morena API,以便通过 Java 使用扫描仪。然而,Morena jar 使用与我项目的其余部分不同的密钥进行了签名。当我尝试运行我的小程序并给出以下运行时异常时,这会导致问题:

"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>

【问题讨论】:

    标签: java security jar applet digital-signature


    【解决方案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 上签名,这将解决问题。

    【讨论】:

    【解决方案2】:

    这里有两种方法可以解决这个问题:

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

    【讨论】:

    • 如果我向您展示我当前 JNLP 文件的内容,您能告诉我 JWS 扩展的外观吗?
    • 我喜欢选项 1,但这会是一个额外的 jnlp 文件来维护吗?对于 2,我们需要剥离签名吗? docs.oracle.com/javase/1.5.0/docs/guide/javaws/developersguide/… 说我们可以使用多个签名。
    • @Matthew 您在上次编辑中看到的扩展 JNLP 似乎走在了正确的轨道上。它需要在主 JNLP 的 resources 部分中引用。类似&lt;extension href='morena.jnlp' /&gt;
    • 我尝试过,但我的小程序在执行期间只是冻结了,我什至没有在代码中使用 morena 库,所以我认为这个引用还不够
    猜你喜欢
    • 2020-05-29
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多