Internet Explorer で Java コードを信頼する方法

注: Microsoft Java Virtual Machine (MSJVM) と Microsoft SDK for Java は、Microsoft からの配布に使用できなくなりました。 この機能は、MSJVM または SDK for Java には拡張されません。 Java 開発者向けのリソースの詳細については、次の Microsoft Web サイトを参照してください。

概要

Java コードを完全に信頼する、部分的に信頼する、または Microsoft Internet Explorer で信頼されていない場合は、いくつかの要因を考慮してください。 この記事では、多くの考慮事項について説明します。この記事では、ブラウザーで実行するときに Java コードの信頼レベルが正しいことを確認するために役立ついくつかのリソースについて説明します。

詳細情報

クラスローダー

Java のクラスローダーの重要性について理解することが重要です。 クラスローダーは、クラスに付与されるセキュリティとアクセスの多くを制御します。 Microsoft サポート技術情報の次の記事では、Microsoft 仮想マシン (Microsoft VM) でさまざまなローダーが使用されている場合について説明します。

仮想マシンで Java クラスを検索する方法を教えてください。この情報を利用すれば、追加の権限を取得する方法がプロジェクトに最も適しているかどうかを判断できます。

信頼される意味

"信頼されている" という用語は、コードが Java サンドボックスに限定されていないことを意味します。 サンドボックスは、次のような信頼された操作を正常に実行できないことを、信頼できないコードに制限します。

  • ネイティブコードの呼び出し

  • COM の使用

  • J/Direct の使い方

  • リモートコンピューターへの接続

  • JDBC の使用

  • Appletwarning を持たないトップレベルウィンドウを作成する

サンドボックスレベルより上の権限でクラスを実行するには、署名されたキャビネット (CAB) ファイル内のクライアントコンピューターにクラスを配信する必要があります。 CAB ファイルに署名するときに、含まれているクラスに必要なアクセス許可も指定する必要があります。 Microsoft Internet Explorer 4 では、3つの既定のアクセス許可 (低、中、高) があります。x:

  • 高権限は、Java サンドボックスと同じです。 このシナリオでの Theonly の利点は、サードパーティによってコードが変更されていないことを示すコードをユーザーに提供できることです。

  • 中程度の権限は [高] と同じですが、ローカルコンピューターのスクラッチ領域へのアクセスが許可されます。

  • 権限が低い場合、基本的には、上記のすべての操作へのアクセスが許可されます。

権限のアサート

次のサポート技術情報の記事では、いつ、どのような場合に、どのようにして Java コードでアクセス許可をアサートするかを理解するのに十分な情報を提供しています。

Java アプレットを実行している SecurityExceptionEx 例外

キャビネット (CAB) ファイルを作成する

ローダー、信頼、アクセス許可の概念を理解できるように、次の手順ではキャビネット (CAB) ファイルの作成方法について説明します。 この段階では、ユーザーのコンピューターにコードをインストールするかどうかを決定することが必要です。または、ページにアクセスするたびにダウンロードを高速化するために、コードを CAB ファイルにパッケージ化することもできます。 ローカルコンピューターにコードをインストールしたくない場合は、単に Cabarc ユーティリティを使用して CAB ファイルを作成し、HTML からアプレットに渡されたパラメーターから CAB を参照することができます。 これについては、この記事の後半のサンプル1を参照してください。 注: このメソッドでは、コードを信頼されているとして実行する必要がない場合は、CAB ファイルに署名する必要はありません。 個々のクラスファイルではなく、1つの圧縮されたファイルをダウンロードできるという利点もあります。 ローカルコンピューターにコードをインストールする場合は、2つの方法があります。 1つの方法は、SDK for Java の Dubuild. .exe ユーティリティを使って配布ユニット (DU) を作成することです。 このユーティリティは CAB ファイルを作成し、自動的に生成される .osd ファイルを含めます。 この記事の後半の「サンプル2」を参照してください。 ローカルコンピューターにコードをインストールするもう1つの方法は、.inf ファイルを使うことです。 この方法は、より手動で、エラーが発生しやすくなりますが、Internet Explorer 3 で動作する唯一の方法であるという明確な利点があります。x以降。 この記事の後半の「サンプル3」を参照してください。 これらの各メソッドには、最初にページにアクセスしたときにコードをダウンロードするという利点があります。新しいバージョンが使用可能になった場合を除き、以降のアクセス時には別のダウンロードは必要ありません。 ただし、ユーザーのローカルドライブには永続的な領域が必要です。

CAB ファイルでデジタル署名を使用する

コードで Java サンドボックス以外の操作を行う必要がある場合、または Web ページからローカルコンピューターにコードをインストールする場合は、必ず CAB に署名する必要があります。 Signcode ユーティリティを使用して CAB にサインインするには、SDK for Java の SDK を使用します。 この記事の後半のサンプルでは、いくつかの一般的な署名シナリオについて説明します。 詳細については、SDK for Java のドキュメントと次の場所にあるサンプルの「Java 権限でのキャビネットファイルの署名」を参照してください。

SDK で [インデックス] をクリックし、[S] をクリックします。 「Java 権限でのキャビネットファイルの署名」を参照してください。 注意すべきいくつかの重要なポイントを次に示します。

  • Java 2.0 以降の SDK の Microsoft Vm と署名ツールには、きめ細かな Java 権限が追加されていました。

  • きめ細かな権限を使用することで、プロジェクトに必要な最小限のアクセス許可を与えることで、exposureas を Java パッケージの開発者に制限することができます。

  • Inifile を使用して、詳細なアクセス許可を要求するには、署名時に. を使用します。 追加情報については、「JavaPermissions 値のリファレンス」という「SDK for Java のドキュメント」を参照してください。

最後に、開発目的でテスト証明書を使うことができます (この記事の後半で説明します) が、アプリケーションを展開する前に実際の証明書が必要になります。 実際の証明書は、証明機関によって入手できます。 VeriSign が、Authenticode と共に使用するための完全保証証明書を発行しています。 VeriSign には、次の場所からアクセスできます。

作成方法、表示方法、証明書の管理方法の詳細については、次の Microsoft Developer Network (MSDN) Web サイトを参照してください。

署名された CAB ファイルを参照するためのタグ

署名された CAB ファイルを HTML で参照するには、いくつかのオプションがあります。 次に、さまざまな方法の一覧と簡単な比較を示します。

  • APPLET タグへの cabbase パラメーター

  • キャビネットのパラメーターをアプレットタグにします。

  • "いいね!" を付けると、APPLET ライブラリ、としての場合は、アプレットタグのパラメーターがあります。

  • オブジェクトタグへの cabbase パラメーター

  • キャビネットのパラメーターをオブジェクトタグにする

  • オブジェクトタグに対する "いいね!" としての使い方

Internet Explorer for Macintosh の信頼済みコード

Authenticode は、Internet Explorer for Macintosh ではサポートされていません。 ダウンロードしたコードアクセスを Java サンドボックスの外部で有効にするには、ユーザーはサーバーを信頼済みサイトのリストに追加してから、サイトの権限をコードが必要とするものに設定する必要があります。

収録

次の Java クラスは、次の3つの短いサンプルで使うことができます。 このテキストを切り取って、Simple .java という名前のファイルに貼り付けます。 注: Jvc のバージョンが、SDK for Java 2.0 (ビルド 4337) 以降のパスにあることを確認します。 このクラスは、実行時に単純な assert 権限を与え、Win32 MessageBox を表示します。

package simple;import com.ms.security.*;public class Simple extends java.applet.Applet{  public void init()  {    try {      if (Class.forName("com.ms.security.PolicyEngine") != null)        PolicyEngine.assertPermission(PermissionID.SYSTEM);    } catch (Throwable cnfe) {  }    try {          MessageBox(0, "MessageBox successfully called.", "Java", 0);      } catch (UnsatisfiedLinkError ule) {          System.err.println("Caught exception: " + ule);          System.err.println("Probably wrong version of Java                             compiler.");      }  }  /** @dll.import("USER32") */   static native int MessageBox(int    hwndOwner,                               String text,                               String title,                               int    style);}

注: 次の Signcode のコマンドラインに、改行が挿入されます。 これらのコマンドラインが長すぎて Microsoft サポート技術情報の1行に収まらない場合は、1行のバッチファイルで編集する必要があります。

サンプル 1-Simple1

このサンプルでは、ローカルコンピューターにインストールされない署名付き CAB ファイルを示します。 以下のコマンドを使用して、単純な .java をコンパイルしたり、単純なクラスを含む CAB ファイルを作成したり、ローカルコンピューターのテストルートを有効にしたり、テスト証明書を作成したり、テスト証明書を使って Simple1 ページを起動したりすることができます。 これらのコマンドを切り取り、go1 という名前のバッチファイルに貼り付けて、上記で作成した単純な .java ファイルと同じディレクトリに保存します。

jvc /d . Simple.javacabarc -p n mycab1.cab simple/Simple.classdel simple\Simple.classsetreg 1 truemakecert -sk MyKeyName -n "CN=My Publisher Name" MyTestCert.cercert2spc MyTestCert.cer MyTestCert.spcsigncode -j javasign.dll -jp LOW -spc MyTestCert.spc -k MyKeyName  mycab1.cabstart Simple1.html

Go1 を実行する前に、次の HTML を切り取り、Simple1 という名前のファイルに貼り付けて、先ほど作成した単純な .java と go1 という名前のファイルと同じディレクトリに配置します。

<HTML> <APPLET CODE="simple.Simple" WIDTH=100 HEIGHT=100> <PARAM NAME="cabbase" VALUE="mycab1.cab"> </APPLET></HTML>

注: "キャビネット" パラメーターは、Internet Explorer 4.0 以降を実行しているコンピューター上の "cabbase" パラメーターと同じように動作します。 "キャビネット" パラメーターには、同じアプレットタグから複数の CAB ファイルを参照できるようにする機能が追加されています。

サンプル 2-Simple2

このサンプルでは、ローカルコンピューターの Java パッケージマネージャー (JPM) にインストールされる署名付き CAB ファイルを示します。 以下のコマンドを使用して、単純な .java をコンパイルし、単純なクラスと dubuild で生成された .osd ファイルを含む CAB ファイルを作成し、ローカルコンピューター上のテストルートを有効にし、テスト証明書を作成し、テスト証明書を使って、低い Java アクセス許可で CAB ファイルに署名し、Simple2 ページをブラウザーで開きます これらのコマンドを切り取り、go2 という名前のバッチファイルに貼り付けて、前に作成した単純な .java ファイルと同じディレクトリに保存します。

jvc /d . Simple.javadubuild mycab2.cab . /D "JPM Simple2" /I *.class /V 1,1,23,0del simple\Simple.classsetreg 1 truemakecert -sk MyKeyName -n "CN=My Publisher Name" MyTestCert.cercert2spc MyTestCert.cer MyTestCert.spcsigncode -j javasign.dll -jp LOW -spc MyTestCert.spc -k MyKeyName  mycab2.cabstart Simple2.html

Go2 を実行する前に、次の HTML を切り取り、Simple2 という名前のファイルに貼り付けて、先ほど作成した単純な .java と go2 という名前のファイルと同じディレクトリに配置します。

<HTML> <APPLET code="simple.Simple" WIDTH=100 HEIGHT=100> <PARAM NAME=useslibrary VALUE="JPM Simple2"> <PARAM NAME=useslibrarycodebase VALUE="mycab2.cab"> <PARAM NAME=useslibraryversion VALUE="1,1,23,0"> </APPLET></HTML>

JPM を使用してローカルコンピューターにパッケージをインストールすると、パッケージは "<windir> \ ダウンロードされた Program Files" フォルダーに表示されます。 このフォルダーを使用して、Internet Explorer を使ってインストールされているパッケージを表示したり、削除したりします。

サンプル 3-Simple3

このサンプルでは、ローカルコンピューターの <windir> \java\lib\simple ディレクトリに単純な class ファイルをインストールする署名付き CAB ファイルを示します。 以下のコマンドを使用して、単純な .java をコンパイルしたり、作成した単純なクラスと .inf ファイルを含む CAB ファイルを作成したり、ローカルコンピューター上のテストルートを有効にしたり、テスト証明書を作成したり、テスト証明書を使って Simple3 ページを起動したりすることができます。 これらのコマンドを切り取り、go3 という名前のバッチファイルに貼り付けて、前に作成した単純な .java ファイルと同じディレクトリに保存します。

jvc /d . Simple.javacabarc -p n mycab3.inner.cab simple/Simple.classdel simple\Simple.classcabarc n mycab3.cab mycab3.inner.cab simple.infsetreg 1 truemakecert -sk MyKeyName -n "CN=My Publisher Name" MyTestCert.cercert2spc MyTestCert.cer MyTestCert.spcsigncode -j javasign.dll -jp LOWX -spc MyTestCert.spc -k MyKeyName  mycab3.cabstart Simple3.html

Go3 を実行する前に、次の HTML を Simple3 という名前のファイルに切り取って貼り付け、先ほど作成した単純な .java と go3 という名前のファイルと同じディレクトリに配置する必要があります。

<HTML> <OBJECT    CLASSID="clsid:99999999-9999-9999-9999-999999999999" CODEBASE="mycab3.cab#Version=1,1,23,0"> </OBJECT> <APPLET CODE="simple.Simple" WIDTH=100 HEIGHT=100> </APPLET></HTML>

注: 次の手順で、guid を "99999999-9999-9999-9999-999999999999" の上にある guid と .inf ファイル用に作成したものに置き換えます。 次の手順に従って、外部キャビネットファイルに含める単純な .inf ファイルを作成します。

  1. <sdk-dir> \bin\packsigndirectory. から、master をコピーします。

  2. 新しいコピーの名前を「.inf」に変更します。

  3. テキストエディターで単純な .inf ファイルを開きます。

  4. 次の行を変更します。

    run=extrac32.exe /e /a /y /l %49000% CabFileName.cab

    宛先:

    run=extrac32.exe /e /a /y /l %49000% mycab3.inner.cab

    差出人:

    InfFile=master.inf

    宛先:

    InfFile=simple.inf

    差出人:

    ClassId="{99999999-9999-9999-9999-999999999999}"

    宛先:

    1. Guidgen を実行します (<sdk-dir> \bin ディレクトリから選びます)。

    2. [Registry Format] #4 オプションを選びます。

    3. "新しい GUID" ボタンをプッシュします。

    4. [コピー] ボタンを押します。

    5. クリップボードから、単純な .inf ファイル内の上の行に、上の HTML にも新しい guid を貼り付けます。

    差出人:

    PackageName="name"

    宛先:

    PackageName="SIMPLE3"

    差出人:

    HKLM,"SOFTWARE\Classes\CLSID\%ClassId%\InstalledVersion",,,"aa,bb,cc,dd"

    宛先:

    HKLM,"SOFTWARE\Classes\CLSID\%ClassId%\InstalledVersion",,,"1,1,23,0"

    差出人:

    HKLM,"Software\Classes\CLSID\%ClassId%\InstalledVersion","Path",,  "%49000%\<filename>"

    宛先:

    HKLM,"Software\Classes\CLSID\%ClassId%\InstalledVersion","Path",,  "%49000%\simple\Simple.class"
  5. 簡単な inffile に加えた変更を保存します。

  6. 以前に作成した go3 ファイルを実行します。

注1 上記のサンプルを実行した後、"setreg 1 false" を実行して、ローカルコンピューターのテストルートを無効にする必要があります。 これにより、Internet Explorer でテストルートが実際の証明書として受け入れられなくなります。 テストルートは、常に "setreg 1 true" を使って再び有効にすることができます。 注2 運用環境のテストのために CAB ファイルに署名するときは、次の点を考慮してください。

  1. 上記のすべてのコマンドによって証明書 andimmediately 署名が生成されます。 ほとんどのユーザーは、CAB を作成して署名するたびに、証明書を作成して署名しますが、CAB を公開している場合は、この操作は行いません。証明書を購入して使用すれば、慎重に記録を取ることができます。 上記のコマンドでは、テスト証明書を作成しますが、購入していない thisif のみを行う必要があります。 一部のユーザーは、この形式のキーを受け取るため、レジストリでキーを保持する代わりに .pvk ファイルを持っている場合は、この方法で署名します。 "-K KeyName" の代わりに "-v MyCertName" を使用します。

  2. Signcode コマンドを実行する場合、"-t http://timestamp.verisign.com/scripts/timstamp.dll" オプションを probablyadd して、CAB ファイルで署名に適切なタイムスタンプを設定する必要があります。 インターネットに persistentconnection を持っていないユーザーに対してコマンドを成功させるために、thesesamples から脱退されました。

注3 Microsoft Visual J++ 6.0 は、Java コンポーネントの単純なパッケージ化を提供します。 その他の情報については、[プロジェクトのプロパティ] ダイアログボックスの [出力] タブと製品マニュアルを参照してください。 Visual J++ 6.0 で作成された配布ユニットは、パッケージインストール用に JPM を使います。注4 Internet Explorer 4 を構成することができます。x以降では、署名されていないコードを既定でサンドボックスのアクセス許可として扱うことができます。 この操作は、イントラネットなどの特殊な状況やテスト目的でのみ行う必要があります。 この方法で Internet Explorer を構成する場合は、コンピューター上で実行されている悪意のある Java コードに対する保護を一切行わないことをお勧めします。 たとえば、すべての Java アプレットをイントラネットゾーンで完全に信頼されたものとして自動的に処理するには、次の手順を実行します。

  1. [インターネットプロパティ] ダイアログの [セキュリティ] タブに移動します。

  2. [ローカルイントラネット] ゾーンを選びます。

  3. [ユーザー設定] オプションを選択し、[設定] をクリックします。

  4. リストで [Java 権限] 項目を見つけ、chooseCustom します。

  5. [カスタム] を選択し、[ Java カスタム設定] をクリックします。

  6. [権限の編集] タブに移動します。

  7. [署名されていないコンテンツを実行する] で [有効] をクリックします

関連情報

Microsoft 仮想マシンのセキュリティとパッケージの問題に関する追加情報については、次の記事の番号をクリックして、Microsoft サポート技術情報の記事を参照してください。

Java アプレットを実行している SecurityExceptionEx 例外

Java 仮想マシンで Java クラスを検索する方法を教えてください。

Internet Explorer 4.0 および Netscape 4.0 で Java を展開する方法

関連コンポーネントのダウンロードに関する記事コードのダウンロードに関する問題の詳細については、次の MSDN Web サイトを参照してください。

Visual J++ と SDK for Java に関する最新のサポート技術情報の記事やその他のサポート情報については、Microsoft テクニカルサポートサイトの次のページを参照してください。

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

フィードバックをお送りいただきありがとうございます!

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×