署名済みの
.cab
ファイルを.jar
ファイルとして再パッケージすると、アプレットの署名がなくなる
症状署名済みの
.cab
ファイルを.jar
ファイルとして再パッケージすると、Sun JRE で実行中のアプレットが未署名として扱われます。.cab
ファイルとしてパッケージされた同じアプレットは、Microsoft VM では署名済みとして実行されます。原因
Microsoft では、独自の Authenticode および
.cab
ファイルテクノロジによってアプレットの署名をサポートしています。署名情報は再パッケージの処理中に失われます。その結果、Sun JVM では.jar
ファイルを未署名として扱います。解決方法
JDK の jarsigner ツールを使用して
.jar
ファイルに署名します。
- VeriSign から Sun Java Signing 証明書を取得するか、Thawte から Java Code Signing 証明書を取得します。また、ほかの認証局 (CA) から類似の証明書を取得することもできます。
- keytool と別名を使用して、証明書をキーストアにインポートします。次に例を示します。
C:\>C:\j2sdk1.5\bin\keytool -import -alias MyCert -file VSSStanleyNew.cerjarsigner
を使用して、.jar
ファイルに署名します。その際、前の手順で生成されたキーストアの RSA 証明書を使用します。指定された別名が同じであることを確認してください。次に例を示します。C:\>C:\j2sdk1.5\bin\jarsigner C:\TestApplet.jar MyCert Enter Passphrase for keystore: ********- 「
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」を参照してください。