次のライブラリ/jar を使用する JWS (Java Web Start) を展開したアプレットがあります。
red5.jar spring-beans.jar spring-context.jar spring-core.jar apache-mina.jar
bcprov-ext-jdk16-145 (弾む城)
これらすべてのライブラリーをアプレットに入れている理由は、red5.jar では他のライブラリーも必要とするためです。ただし、BouncyCastle は ClassLoader によってロードされず、WebStart プロジェクトのコンパイル中に Netbeans によって署名されません。どうすればそれを解決できますか?
アーカイブに Bouncy Castle を含めると、次のようになります。
basic: exception: JAR resources in JNLP file are not signed by same certificate.
exception: JAR resources in JNLP file are not signed by same certificate.
JNLPException[category: Launch File Error : Exception: null : LaunchDesc
そして、プロジェクトに含めない場合でも、次のようになります。
com.sun.deploy.net.FailedDownloadException: Unable to load resource: file:/C:/JNA/dist/lib/bcprov-ext-jdk16-145.jar
私の IDE では、どの jar が Bouncy Castle jar を必要としているかわかりません。さらに、プロジェクトに Bouncy Castle.jar を含めても、Netbeans はデフォルトで署名する必要がありますが、Web Start プロジェクト内の他のすべての jar に署名しますが、署名しません。ただし、jarsigner を使用して簡単に確認すると、Bouncy Castle を含むすべての jar が署名されていることが示されるため、Bouncy Castle が別の証明書で署名されていることを除いて、すべて署名されていると安全に想定できます。
そして、ここに私の質問があります:すべてのファイルに手動で署名しようとする必要がありますか(すべて同じ証明書を持つようにする必要があります)、それとも別の場所に問題がありますか(BouncyCastleがアプレットで署名できないなど)?
どんなポインタでも高く評価されます
編集:
私は基本的に2つのアプローチを持っていますが、どちらも今まで失敗しました:
アプローチ 1. 各 jar のディレクトリ ツリーを抽出し、それらを共有ディレクトリにまとめてダンプし、このディレクトリの jar を作成して、その中のすべてのファイルが同じ証明書 (1 つの jar、1 つの証明書、右..) によって署名されるようにします。ただし、 spring STILL は、すべてのライブラリが allLibs.jar にダンプされる dist\libs\allLibs.jar ではなく、dist\libs\bcProv.jar のようにファイルが編成されることを期待しています。JWS を介してデプロイされた場合、Spring はライブラリを見つけることができないため、このアプローチは惨めに失敗します。
アプローチ 2. すべての jar に同じ証明書を使用して手動で署名します。10 分かけて jar に手動で署名した後、このアプローチも失敗し、bcProv.jar が他の証明書と同じ証明書で署名されていないというエラーをスローする大胆さがあります。
私は困惑し、困惑し、混乱しています。何か案は?これらのjarをJWSアプレットにまとめることはまったく可能ですか:
red5.jar
spring-beans.jar
spring-context.jar
spring-core.jar
apache-mina.jar
bcprov-ext-jdk16-145