注:この Java Plug-in ガイドでは、Java SE 6 update 10 リリースより前にリリースされた機能について説明します。最新情報については、Java Rich Internet Application の開発および配備を参照してください。
このセクションでは、次のトピックについて説明します。
このページでは、Java Plug-in で RSA 署名付きアプレットを検証する方法の概要を説明します。RSA 署名付きアプレットの使用方法の概要については、「Java Plug-in での RSA 署名付きアプレットの配備方法」を参照してください。
ブラウザに依存しない方法で RSA 署名を検証できるようにするため、暗号化サービスプロバイダ (CSP) が Java Plug-in に含まれています。CSP では「MD2withRSA」、「MD5withRSA」、および「SHA1withRSA」デジタル署名アルゴリズムがサポートされています。これは、PluginClassLoader
の static イニシャライザの一部として、Java 暗号化アーキテクチャーフレームワークに自動的に登録されます。
Java SE には、「コードソース」および「保護ドメイン」に基づく詳細なアクセス制御があります。JAR ファイルからロードされる各クラスは、コードソースを保持します。コードソースには、2 つの情報がカプセル化されます。
証明書チェーンは、階層的に順序付けられた公開鍵証明書のリストです。これは、署名者の公開鍵証明書で始まり、ルート証明書発行局 (ルート CA) で終わります。チェーン内のある証明書の公開鍵は、チェーン内の前の証明書に含まれる署名の検証に使用されます。ルート CA の証明書は、自己署名証明書です。ルート CA はよく知られており広く公開されているので信頼性が高いものとされています。
PluginClassLoader
は、構成済みのセキュリティーポリシーをチェックして、指定されたコードソースに付与するアクセス権を決定します。次に、コードソースとそれに付与されるアクセス権が保護ドメインを形成します。この動作は、セキュリティー保護されたクラスローダー (java.security.SecureClassLoader のインスタンス) すべてに共通です。
sun.plugin.security.PluginClassLoader は、java.net.URLClassLoader のサブクラスである sun.applet.AppletClassLoader を拡張し、これは java.security.SecureClassLoader を拡張します。PluginClassLoader
は、次の補足的な作業も実行します: アプレットが署名付きであり、それに付与されたアクセス権が特別な usePolicy
アクセス権を含まない場合、PluginClassLoader
がアプレットのコードソースから署名者 (および署名者のサポートする証明書チェーン) を抽出し、それらを検証します。
Plug-in が証明書チェーンをルート CA 証明書まで検証可能な場合、ルート CA 証明書が、信頼できるルート CA 証明書のデータベースに含まれるかどうかを確認します。ルート CA 証明書がデータベースに含まれる場合、Plug-in は認証された署名者の証明書チェーンを表示して、その主体により署名されたコードに AllPermission
を付与するかどうかをユーザーに問い合わせます。AllPermission
アクセス権を割り当てられた Java コードはシステムコードと同様に扱われ、システムコードが保持するすべての特権を保持します。次に、ユーザーは、主体により署名されたコードに AllPermission
を付与するかどうかと、付与する場合はアクセス権の付与を以降のセッションすべてに適用するかそれとも現行のセッションだけに限定するかを選択できます。
アプレットが署名付きではない場合、または、署名付きのアプレットのアクセス権が usePolicy
を含んでいる場合については、「概要 — アプレットのセキュリティーの基本」を参照してください。
usePolicy
アクセス権システム管理者は、usePolicy
という名前のアクセス権を使用して、PluginClassLoader
の動作を無効にできます。usePolicy
アクセス権を、構成済みのセキュリティーポリシーを使用してコードソースに付与する場合、ユーザーへの要求は行われません。セキュリティーポリシー内で指定されたアクセス権だけがコードソースに付与されます。