jnlpファイルがスイングウェブベースのJavaアプリケーションを起動するために使用されている会社で開発しています。それは、クライアントのjvmキャッシュにダウンロードされるたくさんのjarファイルを持っています。私はその現在の最新バージョン(1.7.0_45-B18を構築)に自分のJVMを更新したとき、私はJNLPファイルを実行しようとすると、以下のセキュリティ警告を見て開始しました:セキュリティ警告を取り除くためにjnlpに署名する
私はこのエラーを見て、読んだ後オラクルのサイト(Signing JNLP files) からJNLPファイルに署名については、この記事で、私はプロジェクトに3つのことを追加しました:
- APPLICATION.JNLPファイルを含むJNLP-INFフォルダすべての私のjarファイルへの元第三者のものを控える。
- 私の会社のデジタル証明書+キーストアバンドルにすべて署名する
- デジタル証明書をJavaコントロールパネル経由でjvmの信頼できるCA証明書にインポートします。あなたがセキュリティ警告のを見ることができるように
:私は上記の変更を行なったし、新しいjarファイルの展開後JNLPファイルを実行しようとした後、私はJVMから次のセキュリティ警告メッセージが表示されました
重大度がより歓迎されたレベルに変更され、発行者の名前は不明ではありません。これは証明書の名前です。警告のレベルが下がっても、それはまだ警告であり、私はエンドユーザに毎回これを見せたくない。どうすればこの問題を解決できますか?
- 第3パートのすべてのジャーにも署名する必要がありますか?もしそうなら、私はどのようにAntコマンドでそれを行うことができますか?サードパーティ製のjarを抽出し、その中にJNLP-INFフォルダを追加して、Antを使用してjarファイルとして再パックするにはどうすればよいですか?
- myapplication .earファイルにJNLP-INFサブフォルダを添付してください。このearファイルはjbossサーバーにデプロイされていますか?
- JARのMETA-INF/MANIFESTファイルに余分な行を追加してください。
- この警告レベルでjvmで実行するアプリケーションをブロックするためにoracleが必要ですか?
マイJNLPファイルは、このテキストである:任意のヘルプ/コメント/ブレインストーミングのための
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://10.100.10.9/ikarusdelhitest/" href="ikarus.jnlp">
<information>
<title>Ikarus</title>
<vendor>My Company name</vendor>
<homepage href="http://www.mycompanyname.com" />
<description>My jnlp triggered web based enterprise software</description>
<icon href="ikarus.ico" />
<offline-allowed />
</information>
<security>
<all-permissions />
</security>
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"
java-vm-args="-Xnoclassgc -Xincgc -client -XX:DefaultMaxRAM=208M -Xms64M -Xmx256M -XX:PermSize=32M -XX:MaxPermSize=128M -XX:MinHeapFreeRatio=15 -XX:MaxHeapFreeRatio=50" />
<jar href="jars/ikarus/ikarusClient.jar" />
<jar href="jars/ikarus/ikarusDelegators.jar" />
<jar href="jars/ikarus/clientRules.jar" />
<jar href="jars/ikarus/ruleImps.jar" />
<jar href="jars/ikarus/ikarusUtil.jar" />
<jar href="jars/ikarus/ikarusResources.jar" />
<jar href="jars/ikarus/domain.jar" />
<jar href="jars/ikarus/domain_repository.jar" />
<jar href="jars/ikarus/domain_service.jar" />
<jar href="jars/ikarus/app_repository.jar" />
<jar href="jars/ikarus/app_service.jar" />
<jar href="jars/ikarus/infrastructure.jar" />
<jar href="jars/ikarus/integration_domain.jar" />
<jar href="jars/jboss_ejb_auth/ejb3-persistence.jar" />
<jar href="jars/jboss_ejb_auth/jboss-ejb3x.jar" />
<jar href="jars/jboss_ejb_auth/jbossall-client.jar" />
<jar href="jars/jasper/commons-beanutils-1.8.0.jar" />
<jar href="jars/jasper/commons-collections-3.2.1.jar" />
<jar href="jars/jasper/commons-digester-1.7.jar" />
<jar href="jars/jasper/commons-logging-1.1.jar" />
<jar href="jars/jasper/iText-2.1.0.jar" />
<jar href="jars/jasper/jasperreports-3.6.0.jar" />
<jar href="jars/jasper/poi-3.2-FINAL-20081019.jar" />
<property name="jnlp.localization" value="Delhi"/>
</resources>
<application-desc main-class="com.celebi.ikarus.main.Ikarus" />
感謝。
だからチェックするだけです。すべてのJAR、* 3部ジャーを含む*、*はあなたの会社の証明書でデジタル署名されていますか?そうでない場合は、「アプリケーションの一部に電子署名がありません」という*メッセージが説明されます。 –
はいjnlp内にリストされているすべてのjarが署名されています。しかし、第三者以外の人だけが内部にJNLP-INF/APPLICATION.JNLPサブフォルダを持っています。これは問題を引き起こすでしょうか? –
AFAIUメインのJarだけが署名されたJNLPを必要とします。 BTW - [JaNeLA](http://pscode.org/janela/)を使用してJNLPを確認してください。ところで。このJNLPは 'java-vm-args'のために署名が必要なようですが、メモリ関連のオプションの大部分はJNLPが署名する必要がないように指定できることに気付きます。代わりにそれらを試して、あなたのアプリで動作するかどうかを確認することができます。 –