1

Netbeans IDE を使用して jar に署名しました。

信頼できる証明書を使用して jar に署名し、Netbeans UI ダイアログでキーストアの詳細とキー エイリアスを入力しました。

製品バージョン: NetBeans IDE Dev (ビルド nbms-and-javadoc-482-on-20130914) Java: 1.7.0_25; Java HotSpot(TM) クライアント VM 23.25-b01 ランタイム: Java(TM) SE ランタイム環境 1.7.0_25-b16


jnlp ファイルをクリックして実行すると、Keystore 例外が発生しました。ここで説明されているように、ユーザーが手動で証明書を Java cacerts キーストアにインポートする必要があるかどうか疑問に思いましたhttp://docs.oracle.com/javase/tutorial/security/sigcert/index.html#GenCSR

そうしましたが、「証明書がキ​​ーストアに追加されました」というメッセージが表示されました。Oracle によって設定されたパスワードは、changeit です。しかし、JNLP ファイルをダブルクリックすると、「実行時エラーです。詳細についてはクリックしてください」というポップアップが表示されます。スタック トレースを取得しません。私が見る限り、Java コンソールにはエラーは表示されず、'CacheEntry' の数行しか表示されません。

Web Start/JNLP がこのようなことをしないのはなぜですか?

1) jar ファイルには、チェーン内の証明書が含まれています。

2) JNLP ファイルに証明書のエントリがある。

3) ユーザーが jnlp ファイルをクリックすると、Java は証明書を抽出して Java キーストアにインポートし、プログラムを実行します。

しかし、もっと重要なのは、なぜ私のプログラムが実行されていないのでしょうか? 自己署名されたjarを拒否する前に、Java 7.21より前のバージョンを正常に実行していました。

アップデート:

Java コントロール パネルで、[詳細] に移動し、デバッグとログのトレースを有効にしました。Java コンソールでは、

java.lang.SecurityException: invalid SHA1 signature file digest for org/bouncycastle/cert/jcajce/JcaX509CRLHolder.class
    at sun.security.util.SignatureFileVerifier.verifySection(Unknown Source)    
    at sun.security.util.SignatureFileVerifier.processImpl(Unknown Source)
    at sun.security.util.SignatureFileVerifier.process(Unknown Source)
    at java.util.jar.JarVerifier.processEntry(Unknown Source)
    at java.util.jar.JarVerifier.update(Unknown Source) 
    at java.util.jar.JarFile.initializeVerifier(Unknown Source)

私も見る

ExitException[ 3]com.sun.deploy.net.FailedDownloadException: Unable to load resource: file:/C:/Users/me/Desktop/dist/lib/bcpkix-jdk15on-149.jar
    at sun.plugin2.applet.JNLP2Manager.downloadResources(Unknown Source)
    at sun.plugin2.applet.JNLP2Manager.prepareLaunchFile(Unknown Source)
    at sun.plugin2.applet.JNLP2Manager.loadJarFiles(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

その場所に bcpkix-jdk15on-149.jar があります。

4

2 に答える 2

0

WebVPN Java プラグインは、Java 7 Update 45 へのアップグレード後に次の一般例外エラーでロードに失敗します - 「com.sun.deploy.net.JARSigningException: Found unsigned entry in resource:

条件: Java 7 Update 45 を使用する Windows または Mac OSX マシン。

回避策: 1) [Java コントロール パネル] -> [一般] -> [設定] で [一時ファイルをコンピュータに保持する] オプションを無効にします。これは、Mac OSX と Windows の両方で機能します。

2) Java をバージョン 7 Update 40 以下にダウングレードします。

https://blogs.oracle.com/java-platform-group/entry/updated_security_baseline_7u45_impacts

于 2013-12-06T18:31:39.227 に答える
0

NetBeans 7.4 でビルドを行っていますが、追加のフラグを jarsigner に送信できないようです。私はこれを見つけましたJavaが複数の署名アルゴリズムで署名付きjarを検証できない原因

ニュースグループ アイテムのヒントを使用して、3 つの BC jar のそれぞれを解凍しました: "C:\Program Files (x86)\Java\jdk1.7.0_40\bin\jar" xvf *.jar

次に、META-INF フォルダー内の署名ファイルを削除し、"C:\Program Files (x86)\Java\jdk1.7.0_40\bin\jar" cmf META-INF\MANIFEST.MF bcpkix のように元に戻しました。 -jdk15on-149-mot.jar 組織

実行されますが、Java コンソールでこれを見て驚きました。

次の Codebase マニフェスト属性がありません: file:/C:/Users/me/Desktop/dist/lib/bcprov-ext-debug-jdk15on-149-mot.jar セキュリティ: CertPath API 基本を使用して証明書チェーンを検証します: Plugin2ClassLoader.getPermissions CeilingPolicy allPerms セキュリティ: JAVAWS AppPolicy パーミッションが要求されました: file:/C:/Users/ me /Desktop/dist/lib/bcprov-ext-debug-jdk15on-149-mot.jar 基本: JNLP2ClassLoader.getPermissions()

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/no_redeploy.html#permissionsに基づく

属性 Permissions: all-permissions を jar に追加しました

"C:\Program Files (x86)\Java\jdk1.7.0_40\bin\jar" umf manifest.txt bcprov-ext-debug-jdk15on-149-mot.jar

于 2013-10-12T12:54:39.763 に答える