2009-06-10 8 views
4

当社の製品はJavaバージョン1.5.0_13で停止されており、アップグレードしたいと考えています。当社のソフトウェアは、Java Web Startを介して多数のjarファイルをデプロイします。これらの瓶のすべてに署名する必要があります。ただし、いくつかのjarファイルにはクラスファイルが含まれておらず、Javaバージョン1.5.0_14からjarsignユーティリティがクラスファイルを含まないjarファイルに署名しないように選択されているようです。jarsignにjarfilesの署名を強制するにはどうすればよいですか?

jarsignにこれらのjarに署名するにはどうすればよいですか?あるいは、Java Web Startを使ってこれらのjarファイルを署名なしで配布するにはどうすればよいですか?バージョン1.5.0_14以上のjarsignへの変更が文書化されている場所はどこですか?私はrelease notesで見つけることができません。

+1

署名付きjarファイルの作成に使用するコマンドを表示できますか? – notnoop

答えて

9

問題があるかどうか確認できません。あなたの環境で何が違うかも調べてみることができますか?私はWindows 7 RCで動作しています。

のバージョンを確認してみましょう:

 
C:\temp>java -version 
java version "1.5.0_14" 
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03) 
Java HotSpot(TM) Client VM (build 1.5.0_14-b03, mixed mode, sharing) 

は、私たちのジャーになるだろうか見てみましょう:

 
C:\temp>dir /s /b com 
C:\temp\com\rdc 
C:\temp\com\rdc\test 
C:\temp\com\rdc\test\logging.properties 

はのは、jarファイルを作ってみましょう:

 
C:\temp>jar -cfv test-source.jar com/* 
added manifest 
adding: com/rdc/(in = 0) (out= 0)(stored 0%) 
adding: com/rdc/test/(in = 0) (out= 0)(stored 0%) 
adding: com/rdc/test/logging.properties(in = 13) (out= 15)(deflated -15%) 

はのはjarファイルに署名をしてみましょう:自分で署名した証明書を使用しています。

 
C:\temp>jarsigner -signedjar test-dest.jar test-source.jar vinay 
Enter Passphrase for keystore: 

Warning: The signer certificate will expire within six months. 

私たちの署名ジャーに何があるか見てみましょう:

 
C:\temp>jar tvf test-dest.jar 
    155 Wed Jul 15 23:39:12 BST 2009 META-INF/MANIFEST.MF 
    276 Wed Jul 15 23:39:12 BST 2009 META-INF/VINAY.SF 
    1130 Wed Jul 15 23:39:12 BST 2009 META-INF/VINAY.DSA 
    0 Wed Jul 15 23:37:18 BST 2009 META-INF/ 
    0 Wed Jul 15 19:44:44 BST 2009 com/rdc/ 
    0 Wed Jul 15 19:44:58 BST 2009 com/rdc/test/ 
    13 Wed Jul 15 23:37:10 BST 2009 com/rdc/test/logging.properties 

OK、確かに署名されているように見え、それが何のクラスがありません。 、すべてが表示され、それの顔に

 
C:\temp>jarsigner -verify -verbose test-dest.jar 

     155 Wed Jul 15 23:51:34 BST 2009 META-INF/MANIFEST.MF 
     276 Wed Jul 15 23:51:34 BST 2009 META-INF/VINAY.SF 
     1131 Wed Jul 15 23:51:34 BST 2009 META-INF/VINAY.DSA 
      0 Wed Jul 15 23:37:18 BST 2009 META-INF/ 
      0 Wed Jul 15 19:44:44 BST 2009 com/rdc/ 
      0 Wed Jul 15 19:44:58 BST 2009 com/rdc/test/ 
smk  13 Wed Jul 15 23:37:10 BST 2009 com/rdc/test/logging.properties 

    s = signature was verified 
    m = entry is listed in manifest 
    k = at least one certificate was found in keystore 
    i = at least one certificate was found in identity scope 

jar verified. 

Warning: This jar contains entries whose signer certificate will expire within 
six months. Re-run with the -verbose and -certs options for more details. 

:のは、jarファイルを検証してみましょう、今

 
Signature-Version: 1.0 
Created-By: 1.5.0_14 (Sun Microsystems Inc.) 
SHA1-Digest-Manifest-Main-Attributes: 4bEkze9MHmgfBoY+fnoS1V9bRPs= 
SHA1-Digest-Manifest: YB8QKIAQPjEYh8PkuGA5G8pW3tw= 

Name: com/rdc/test/logging.properties 
SHA1-Digest: qXCyrUvUALII7SBNEq4R7G8lVQQ= 

 
Manifest-Version: 1.0 
Created-By: 1.5.0_14 (Sun Microsystems Inc.) 

Name: com/rdc/test/logging.properties 
SHA1-Digest: Ob/S+a7TLh+akYGEFIDugM12S88= 

そしてVINAY.SFの内容:のはMANIFEST.MFの内容を見てみましょう順番になるあなたの証明書が期限切れになったのか、取り消されたのか確認できますか?自己署名証明書または本物の証明書を使用していますか?それともあなたの問題が誤解されていますか?

1

ダミーのクラスファイルを必要に応じて置くことができます。恐らく不愉快だがおそらく必要かもしれない。

+3

はい、Hello World Javaアプリケーションの目的を発見しました:) – akarnokd

1

これは長いショットですが、Ant SignJar taskは正しいことをJarsignに納得させるかもしれません。バランスをとらえる可能性のあるオプションがたくさんあります。

1

私はVinayと同じことを試みましたが、JDK 1.5.0_17 jarsignerと適切なVerisign証明書を使って同じ結果を得ました。 Jarsignerが動作し、jarsigner -verifyを使用してjarファイルが検証されました。

1

追加について:私はJava Web Startを使用していますが、イメージのみを含むjarファイルがあります。 JDK 1.6_05(07,10も)とAnt世代では、問題なく署名されています(自己署名証明書付き)。 したがって、説明されている他のものと同様に、.classファイルを含むjarファイルにリンクされているかどうかはわかりません。

2

この問題を検索している人は、1.5.0_14以降の特定のJava 1.5以降のバージョンにのみ影響があると判断しました。これは1.5の最新バージョンで修正されているようで、1.6で確実に修正されています。

関連する問題