署名済みの
.cab
ファイルを.jar
ファイルとして再パッケージ化すると、Sun JavaTM Runtime Environment (JRETM) 内で実行するアプレットの署名がなくなる
症状署名済みの
.cab
ファイルを.jar
ファイルとして再パッケージすると、Sun JRE で実行中のアプレットが未署名として扱われます。ところが、
.cab
ファイルとしてパッケージされた同じアプレットは、Microsoft Virtual Machine (VM) では署名済みとして実行されます。原因
Microsoft では、独自の Authenticode および
.cab
ファイルテクノロジによるアプレットの署名をサポートしています。署名情報は再パッケージの処理中に失われます。その結果、Sun JRE 実装では.jar
ファイルを未署名として扱います。解決方法
Java Development Kit (JDK) の jarsigner ツールを使って
.jar
ファイルに署名するには、次の方法を使用します。
- VeriSign から Sun Java Signing 証明書を取得するか、Thawte から Java Code Signing 証明書を取得します。また、ほかの認証局 (CA) から類似の証明書を取得することもできます。RSA 証明書は、Verisign や Thawte など、RSA をサポートする証明書発行局 (CA) から購入できます。
- keytool コマンドと別名を使用して、証明書をキーストアにインポートします。たとえば、次のコマンドを入力します。
C:\>C:\jdk1.6.0\bin\keytool -import -alias MyCert -file VSSStanleyNew.cer
jarsigner
コマンドを入力して、.jar
ファイルに署名します。その際、前の手順で生成されたキーストアの RSA 証明書を使用します。指定された別名が同じであることを確認してください。たとえば、次のコマンドを入力します。上記のコマンドを入力すると、次の応答が表示されます。前の手順でキーストアの資格の生成中に指定したパスフレーズを入力します。C:\>C:\jdk1.6.0\bin\jarsigner C:\TestApplet.jar MyCertキーストアの資格の生成中に指定したパスフレーズを入力します。Enter Passphrase for keystore:
- "
jarsigner -verify -verbose -certs
" を使用して、.jar
ファイルの検証を行います。C:>C:\jdk1.6.0\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」を参照してください。
アプレットに署名する方法の詳細については、「RSA 証明書を使用したアプレットの署名」を参照してください。