.cab ファイルから .jar ファイルにアップグレードした署名済みアプレットを Microsoft VM で実行するとセキュリティ例外がスローされる


症状

.cab ファイルから .jar ファイルに署名済みアプレットをアップグレードすると、そのアプレットは Microsoft VM で動作しなくなります。Sun JRE では正常に実行されます。

原因

このエラーは、Microsoft VM に署名済み .jar ファイルのサポートがないために起こります。Microsoft VM では <APPLET> タグの archive 属性を通じて未署名 .jar ファイルをサポートしていますが、署名済み .jar ファイル内のクラスやリソースは、Microsoft VM では信頼されていないものとして扱われます。

その結果、そのアプレットは Microsoft VM によって信頼されていないものとして扱われることになり、アプレット sandbox 外部にアクセスが必要となるアプレットによるアクションは、セキュリティ例外になる場合があります。

解決方法

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

回避するには、Sun JVM の場合は、アップグレードした .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>

詳細情報

なし