.cab ファイルから .jar ファイルにアップグレードされた署名付きアプレットを Microsoft Virtual Machine (VM) 内で実行すると、アプレットからセキュリティー例外がスローされる


症状

.cab ファイルから .jar ファイルに署名済みアプレットをアップグレードすると、そのアプレットは Microsoft VM で動作しなくなります。このアプレットは、Sun JavaTM Runtime Environment (JRETM) 実装では何のエラーもなく実行されます。

原因

Microsoft VM は署名付き .jar ファイルをサポートしません。Microsoft VM は、<APPLET> タグの archive 属性経由で署名なし .jar ファイルをサポートします。ただし、Microsoft VM は、署名付き .jar ファイル内のクラスやリソースを信頼できないものとして処理します。

その結果、アプレットは Microsoft VM によって信頼できないものとして処理されます。アプレットが実行するアクションのうち、アプレットのサンドボックスの外側へのアクセスを要求するアクションでは必ず、セキュリティー例外が発生します。

解決方法

Microsoft VM によって認識可能なアプレット署名スキームは、.cab ファイルで使用する Authenticode テクノロジだけです。

Sun JRE の場合は、アップグレードした .jar ファイルを archive 属性を通じて指定します。Microsoft VM の場合はそのまま、.cab ファイルを cabbase を通じて指定します。たとえば、次のコードがあるとします。

<APPLET code="MyApplet" width=100 height=100>
<PARAM name="cabbase" value="package1.cab, package2.cab">
</APPLET>

上記コードを、次のコードに示すように変更します。

<APPLET code="MyApplet" archive="package1.jar, package2.jar"
width=100 height=100>
<PARAM name="cabbase" value="package1.cab, package2.cab">
</APPLET>

詳細情報

なし。