0

Javaを介してスキャナーを利用するために、Morena APIを使用しています。ただし、Morena jar は、プロジェクトの残りの部分とは異なるキーを使用して署名されています。これにより、アプレットを実行しようとすると問題が発生し、次の実行時例外が発生します。

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

私は自分のプロジェクトに netbeans を使用しています。

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

2 に答える 2

1

これは、Java Web Start が、クライアントがダウンロードする jar が危険にさらされていないことを保証する方法です。これはセキュリティ機能です。

できることは、デフォルトの証明書ではなく、証明書を使用して Morena jar に署名することです。

を使用するkeytooljarsigner、jar に署名できます。

EDIT : Java Web Start 1.5.0 以降では、jar に多重署名し、別の既存の証明書チェーンにコード署名証明書を追加できます。

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

そのため、あなたの署名で Morena jar に署名することができ、それで問題は解決します。

于 2012-08-08T05:57:15.000 に答える
1

この問題を解決するには、次の 2 つの方法があります。

  1. Morena API Jars を JWS 拡張に移動します。独自のレベルの特権を主張し、他のアプリで再利用できるため、これが最善の方法です。
  2. Morena Jars からデジタル署名を取り除き、独自の証明書で署名します。
于 2012-08-08T06:11:09.577 に答える