署名済みの .cab ファイルを .jar ファイルとして再パッケージすると、アプレットの署名がなくなる


症状

署名済みの .cab ファイルを .jar ファイルとして再パッケージすると、Sun JRE で実行中のアプレットが未署名として扱われます。.cab ファイルとしてパッケージされた同じアプレットは、Microsoft VM では署名済みとして実行されます。

原因

Microsoft では、独自の Authenticode および .cab ファイルテクノロジによってアプレットの署名をサポートしています。署名情報は再パッケージの処理中に失われます。その結果、Sun JVM では .jar ファイルを未署名として扱います。

解決方法

JDK の jarsigner ツールを使用して .jar ファイルに署名します。

  1. VeriSign から Sun Java Signing 証明書を取得するか、Thawte から Java Code Signing 証明書を取得します。また、ほかの認証局 (CA) から類似の証明書を取得することもできます。
  2. keytool と別名を使用して、証明書をキーストアにインポートします。次に例を示します。
  3. C:\>C:\j2sdk1.5\bin\keytool -import -alias MyCert -file VSSStanleyNew.cer  
  4. jarsigner を使用して、.jar ファイルに署名します。その際、前の手順で生成されたキーストアの RSA 証明書を使用します。指定された別名が同じであることを確認してください。次に例を示します。
  5. C:\>C:\j2sdk1.5\bin\jarsigner C:\TestApplet.jar MyCert
    Enter Passphrase for keystore: ********
  6. jarsigner -verify -verbose -certs」を使用して、.jar ファイルの検証を行います。
    C:>C:\jdk1.4.2\bin\jarsigner -verify -verbose 
    -certs d:\TestApplet.jar
    
    
    245 Wed Mar 10 11:48:52 PST 2000 META-INF/manifest.mf
    187 Wed Mar 10 11:48:52 PST 2000 META-INF/MYCERT.SF
    968 Wed Mar 10 11:48:52 PST 2000 META-INF/MYCERT.RSA
    smk      943 Wed Mar 10 11:48:52 PST 2000 TestApplet.class
    smk      163 Wed Mar 10 11:48:52 PST 2000 TestHelper.class
    
    X.509, CN=XXXXXXX YYY, OU=Java Software,
    O=Sun Microsystems, L=Cupertino,
    ST=CA, C=US (mycert)
    X.509, CN=Sun Microsystems, OU=Java Plug-in QA,
    O=Sun Microsystems, L=Cupertino, ST=CA, C=US
    X.509, EmailAddress=server-certs@thawte.com, 
    CN=Thawte Server CA, OU=Certification
    Services Division, O=Thawte Consulting cc,
    L=Cape Town, ST=Western Cape, C=ZA
    
    
    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.

詳細情報

        VerSign による「Code Signing」、または Thawte による「code-signing certificate support」を参照してください。