このトピックでは、JavaまたはJavaFXアプリケーションがブラウザでの実行やブラウザからの起動が許可されるかどうかを決定するために使用される、デプロイメント・プロセスのステップについて説明します。このプロセスは、スタンドアロンまたは自己完結型アプリケーションには適用されません。
ユーザーがブラウザに埋め込まれたりブラウザから起動されるJavaまたはJavaFXアプリケーション(まとめてRich Internet Application (RIA)と呼ばれる)を起動すると、そのRIAの実行が許可されるかどうか、どのバージョンのJREが使用されるか、およびどのセキュリティ・プロンプトがユーザーに表示されるかを決めるために、いくつかのチェックが行われます。このトピックの目的は、それらのチェックについて説明し、それらの決定がどのように行われるかを示すことです。
このトピックの内容は次のとおりです。
次のフロー・チャートは、RIAの配備に使用されるプロセスの簡易版を示しています。
チャートの左側の列にあるノードは、ユーザーがRIAを起動したあとに行われる処理の概要を示しています。次の手順は、主要なプロセスを説明しています。RIAを実行するかブロックするかの決定が行われると、残りの手順はすべてスキップされます。
Javaコンテンツのロードを開始します。
ユーザーが、アプレットの含まれるHTMLページを開くか、Java Web Startアプリケーションを起動すると、そのコンテンツのロードが開始されます。インストールされているJREがない場合、ブラウザは、プラグインが見つからずRIAが実行されないことをユーザーに通知します。
ブラウザ・プラグインが登録されていて、実行を許可されますか。
プラグインが登録され、有効になっていることを確認します。詳細は、「プラグイン処理」を参照してください。
このRIA用のルールが存在しますか。
デプロイメント・ルール・セットが存在する場合は、そのRIAと一致するルールを探します。一致するルールが見つかった場合は、そのルールのアクションが実行されます。アクションがblock
の場合、そのRIAは実行されません。アクションがrun
の場合、そのRIAは実行を許可されます。ルールが見つからない場合、またはアクションがdefault
の場合、配備プロセスはフロー・チャートの次の手順に進みます。詳細は、「ルール処理」を参照してください。
JREが期限切れになっているか、セキュリティ・ベースラインを下回っていますか。
RIAを実行するために有効なJREがインストールされていることを確認します。そうでない場合は、JREを更新するオプションがユーザーに表示されます。詳細は、「JREのステータス」を参照してください。
RIAに有効な署名が含まれていますか。
RIAが署名されているかどうかを確認します。そうである場合は、その署名が有効であることを確認します。詳細は、「デジタル署名」を参照してください。
必要なセキュリティ・プロンプトはどれですか。
RIA、Javaコントロール・パネル内のセキュリティ・レベルの設定および例外サイト・リストに基づいて、表示するセキュリティ・プロンプトを決めます。古いJREが要求される場合は、RIAの実行に使用されるJREを選択します。詳細は、「セキュリティ・プロンプト」を参照してください。
RIAに、セキュリティ要件を満たさないリソースや拡張機能などの追加のアーティファクトがある場合、RIAは最初に実行が許可された後にブロックされることがあります。すべてのアーティファクトが署名付きで、JARファイル・マニフェスト属性によって指定された承認済の場所からアクセスされることを確認してください。デプロイメント・ルール・セットを使用する場合は、すべてのアーティファクトと一致するルールがあることを確認してください。例外サイト・リストを使用している場合、RIAによって使用されているすべての場所がリストに含まれるようにします。
コンテンツのロードが開始されると、プラグイン処理では、「ブラウザ・プラグインが登録されていて、実行を許可されるか」という、配備プロセスの2番目の手順の質問に答えます。このプロセスは、図24-1の「プラグイン処理」ボックス(この手順のノードにつながっていて、そのノードの右側に表示されているもの)に示されています。
プラグインが登録されていない場合、ブラウザは、プラグインが見つからずRIAが実行されないことをユーザーに通知します。
プラグインが登録されている場合は、そのプラグインが無効になっているかどうかがデプロイメント・プロパティでチェックされます。さらに、ブラウザがそのプラグインを無効にしたかどうかもチェックされます。プラグインが無効になっている場合は、ユーザーに通知され、RIAは実行されません。プラグインが有効になっている場合、配備プロセスは「ルール処理」に進みます。Java Plug-inの無効化および有効化の詳細は、第20章「Javaコントロール・パネル」の20.4項「セキュリティ」を参照してください。プラグインがブラウザによって無効にされた場合は、ブラウザのドキュメントを参照してください。
ルール処理では、「このRIA用のルールは存在するか」という、配備プロセスの3番目の手順の質問に答えます。このプロセスは、図24-1の「ルール処理」ボックス(この手順のノードにつながっていて、そのノードの右側に表示されているもの)に示されています。ルール処理では、有効なデプロイメント・ルール・セット・ファイルを検索します。この機能の詳細は、第28章「デプロイメント・ルール・セット」を参照してください。
デプロイメント・ルール・セットが見つからない場合、配備プロセスは「JREのステータス」に進みます。
無効なデプロイメント・ルール・セットが見つかった場合は、エラー・メッセージがユーザーに表示され、RIAがブロックされます。
有効なデプロイメント・ルール・セットが見つかった場合は、次のいずれかのアクションが実行されます。
RIAと一致するルールがない場合、配備プロセスは「JREのステータス」に進みます。
RIAが1つのルールと一致する場合は、次のいずれかのアクションが実行されます。
そのルールがRIAの実行を許可する場合は、RIAの署名がチェックされます。署名が有効な場合、またはRIAが署名されていない場合、RIAはセキュリティ・プロンプトを表示せずに、要求されたJREバージョンで実行されます。RIAの署名が有効でない場合は、セキュリティ警告がユーザーに表示され、RIAがブロックされます。
ルール処理では、有効期限が切れている証明書または証明書失効ステータスをチェックできない証明書を含む署名は有効と見なされ、RIAは実行されます。無効な署名とは、ブラックリストに登録されている、失効している、または何らかの方法で不正な形式にされた証明書を含むものです。
そのルールがRIAをブロックする場合は、セキュリティ警告がユーザーに表示され、RIAがブロックされます。
そのルールがRIAのデフォルトの処理を要求する場合、配備プロセスは「デジタル署名」に進みます。
JREのステータス処理では、「JREが期限切れになっているか、セキュリティ・ベースラインを下回っているか」という、配備プロセスの4番目の手順の質問に答えます。このプロセスは、図24-1の「JREのステータス」ボックス(この手順のノードにつながっていて、そのノードの右側に表示されているもの)に示されています。セキュリティ・ベースラインを無視するためのオプションが設定されている場合、JREのステータスはチェックされず、配備プロセスは「デジタル署名」に進みます。デプロイメント・プロパティdeployment.expiration.check.enabled
を使用すると、セキュリティ・ベースラインが無視されるかどうかを確認できます。このプロパティの詳細は、第21章「配備構成ファイルおよびプロパティ」を参照してください。
セキュリティ・ベースラインが無視されない場合は、JREが期限切れになっているか、セキュリティ・ベースラインを下回っているかがチェックされます。どちらの条件にも当てはまらない場合、配備プロセスは「デジタル署名」に進みます。JREの有効期限の詳細は、23.1項「Javaクライアントのセキュリティ・レベルの設定」を参照してください。セキュリティ・ベースラインについては、使用しているJDKバージョンの「Update Release Notes」を参照してください。
JREが期限切れになっているか、セキュリティ・ベースラインを下回っている場合は、JREを更新するオプションがユーザーに表示されます。ユーザーの選択に応じて、次のいずれかのアクションが実行されます。
ユーザーがあとで更新することを選択した場合、配備プロセスは「デジタル署名」に進みます。
ユーザーがRIAをブロックすることを選択した場合、RIAは実行されません。
ユーザーがJREを更新することを選択した場合は、java.comにあるダウンロード・ページに移動します。
デジタル署名処理では、「RIAに有効な署名が含まれているか」という、配備プロセスの5番目の手順の質問に答えます。このプロセスは、図24-1の「デジタル署名」ボックス(この手順のノードにつながっていて、そのノードの右側に表示されているもの)に示されています。RIAが署名されていない場合、配備プロセスは「セキュリティ・プロンプト」に進みます。
RIAが署名されている場合は、RIAの署名に使用された証明書が検証されます。その証明書が無効または失効している場合、RIAはブロックされます。
RIAが有効な証明書で署名されている場合、またはその証明書の有効期限が切れているか、失効ステータスをチェックできない場合、配備プロセスは「セキュリティ・プロンプト」に進みます。チェックできない証明書を含むRIAに対して実行されるアクションは、Javaコントロール・パネルの「セキュリティ・レベル」の設定によって決まります。
デジタル署名については、「Signing and Verifying JAR Files」を参照してください。
配備プロセスの最後の手順はRIAが実行されるかどうかを判断するもので、「必要なセキュリティ・プロンプトはどれか」という、配備プロセスの最後の手順の質問に答えます。RIAが実行される場合、この手順では、古いバージョンが要求されたときに使用されるJREのバージョンも判断します。図24-1の「通常の処理」ボックスおよび「例外サイト・リスト」ボックスは、RIAが実行されるかどうかと、どのセキュリティ・プロンプトが表示されるかを判断するプロセスを示しています。これらのボックスは、この手順のノードにつながっていて、そのノードの右側に表示されています。
古いバージョンが要求されたときに使用されるJREを判断するプロセスは、図24-1の「JREの選択」ボックス(RIAが実行されるかどうかと、どのセキュリティ・プロンプトが表示されるかを判断するためのボックスにつながっているもの)に示されています。
プロセスのこの時点では、RIAを実行するかブロックするかの決定、および表示するセキュリティ・プロンプトの選択は、次の基準に基づいています。
Javaコントロール・パネルの「セキュリティ・レベル」の設定のデフォルトは、「高」
です。セキュリティ・レベルの詳細は、第20章「Javaコントロール・パネル」の20.4項「セキュリティ」を参照してください。
RIAの署名証明書の存在
RIAの署名に使われた証明書のステータス
例外サイト・リストへのRIAの場所の記載
注: 次回からプロンプトを表示しないオプションを以前にユーザーが選択していた場合、そのプロンプトは抑止されます。次回からプロンプトを表示する代わりに、抑止するオプションの選択時にユーザーが行なった応答が使用されます。
次の表に、RIAの場所が例外サイト・リストに載っていない場合にRIAが実行されるかブロックされるかを示します。
セキュリティ・レベル | プロンプトを表示して実行 | ブロック |
---|---|---|
非常に高 | 署名者のCAキーストアに入っている有効な証明書で署名されているRIAのみが実行を許可されます。RIAのメインJARファイルのマニフェストにPermissions属性が含まれている必要があります。Permissions属性の詳細は、第26章「セキュリティ用のJARファイル・マニフェストの属性」を参照してください。 | 次のRIAがブロックされます。
|
高 | 署名者のCAキーストアに入っている有効な証明書、または失効ステータスをチェックできない証明書で署名されているRIAが、実行を許可されます。RIAのメインJARファイルのマニフェストにPermissions属性が含まれている必要があります。Permissions属性の詳細は、第26章「セキュリティ用のJARファイル・マニフェストの属性」を参照してください。 | 次のRIAがブロックされます。
|
RIAの実行が許可され、古いバージョンのJREが要求された場合、配備プロセスは「JREの選択」に進みます。
例外サイト・リスト機能はJava 7 Update 51で導入されたもので、現在のセキュリティ要件を満たしていないためにブロックされてしまうRIAをユーザーが実行できるようにします。例外サイト・リストに載っているサイトから起動されるRIAは、適切なセキュリティ・プロンプトを表示して実行することが許可されます。この機能の詳細は、第29章「例外サイト・リスト」を参照してください。
RIAの実行が許可され、古いバージョンのJREが要求された場合、配備プロセスは「JREの選択」に進みます。
常に最新バージョンのJREを使用することをお薦めします。ただし、RIAがこのバージョンのJREと互換性がない場合は、そのRIAの実行に必要なバージョンを、JNLPファイルやAPPLETタグで要求できます。
古いバージョンが要求された場合は、以降のセクションで説明されている基準に基づいて、次のいずれかのアクションが実行されます。
Secure Static Versioning (SSV)を使用して、要求されたJREバージョンでRIAが再起動されます。
インストールされている最新のJREバージョンでRIAが実行されます。
RIAがブロックされます。
次の条件が満たされた場合は、SSVを使用して、要求されたJREバージョンでRIAが再起動されます。
RIAが署名されています。
要求されたJREバージョンがインストールされています。
すべてのアクセス権を要求する特権付きRIAの場合、RIAが有効な証明書で署名されています。
サンドボックスRIAまたは自己署名付きRIAの場合、プロンプトが表示されたときにユーザーが要求されたバージョンでの実行に同意します。