Java Platform, Standard Editionデプロイメント・ガイド
目次      

25 署名付きRIAの使用

このトピックでは、Webページに埋め込まれたりブラウザから起動されるJavaおよびJavaFXアプリケーションである、Rich Internet Application (RIA)の署名に使用される証明書の使用に関する情報を提供します。

この節の内容は以下のとおりです。

25.1 動的信頼性管理のサポート

Java SEには、「コード・ソース」および「保護ドメイン」に基づく詳細なアクセス制御があります。JARファイルからロードされる各クラスは、コード・ソースを保持します。コード・ソースには、次の情報がカプセル化されます。

  • クラスの呼出し元の位置(URL)。さらに、クラス・ローダーによりロードされる各クラスは、コード・ソース(つまり、クラスの出所および署名者)に基づき、1つの保護ドメインにのみ所属します。各保護ドメインは、構成済みのセキュリティ・ポリシーに基づき、関連付けられたアクセス権のセットを保持します。次に、コード・ソースとそれに付与されるアクセス権をカプセル化します。

  • 証明書に署名した主体のリスト。コード・ソース内の各署名者の主体は、X.509公開鍵証明書およびサポートする証明書チェーンにより表されます。

証明書チェーンは、階層的に順序付けられた公開鍵証明書のリストです。これは、署名者の公開鍵証明書で始まり、ルート証明書発行局(ルートCA)で終わります。チェーン内のある証明書の公開鍵は、チェーン内の前の証明書に含まれる署名の検証に使用されます。ルートCAの証明書は、自己署名証明書です。ルートCAはよく知られており広く公開されているので信頼性が高いものとされています。

デプロイメント・クラス・ローダーは、構成済のセキュリティ・ポリシーをチェックして、指定されたコード・ソースに付与する権限を決定します。次に、コード・ソースとそれに付与されるアクセス権が保護ドメインを形成します。この動作は、セキュリティ保護されたクラス・ローダー(java.security.SecureClassLoaderのインスタンス)のすべてに共通です。

証明書チェーンをルートCA証明書まで検証可能な場合、そのルートCA証明書がチェックされ、信頼できるルートCA証明書のデータベースに含まれていることを確認します。ルートCA証明書がデータベースに含まれる場合、認証された署名者の証明書チェーンが表示され、ユーザーは、その主体により署名されたコードにAllPermissionを付与するよう求められます。AllPermissionアクセス権を割り当てられたJavaコードはシステム・コードと同様に扱われ、システム・コードが保持するすべての特権を保持します。次に、ユーザーは、主体により署名されたコードにAllPermissionを付与するかどうか、および主体により署名されたコードにその権限を付与する場合は以降のセッションすべてに適用するかそれとも現行のセッションのみに限定するかを選択できます。

25.2 RIAへの署名

署名付きRIAは、RIAを容易にデプロイするためにサポートされています。この項では、信頼できる認証局(CA)からの証明書を使用してRIAに署名する手順を順を追って説明し、これにより、開発の初心者は、多数の複雑なセキュリティ関連の問題に悩まされずに、RIAに署名できるようになります。

アプレットに署名するには、次の項目が必要です。

  1. 署名ツール

  2. 公開鍵の鍵ペアおよび証明書チェーン

  3. JARファイルとしてバンドルされたRIAおよびそのすべてのクラス・ファイル

25.2.2 証明書の取得

証明書は、VeriSignThawteなどのCAから購入できます。VeriSignなどのいくつかのCAは、使用中の特定の署名ツールに基づき、別のプロトコルを証明書発行用に実装します。

Jarsignerは、VeriSignやThawte証明書で動作することが知られており、認証局でも動作可能です。Jarsignerを使用してRIAに署名するには、VeriSignまたはThawteからJava用のコード署名証明書を取得するか、他のCAから類似の証明書を取得します。証明書の登録処理中に、証明書署名要求(CSR)を提出するよう求められます。CSRを生成するには、次の手順を実行します。

  1. keytoolを使用して、RSA鍵ペアを生成します(「-genkey -keyalg rsa」オプションを指定)。識別名に、VeriSignまたはThawteで規定されたすべてのコンポーネントが含まれることを確認してください。次に例を示します。

    C:\Program Files\Java\jdk1.8.0\bin\keytool -genkey -keyalg rsa -alias MyCert
    Enter keystore password: *********
    What is your first and last name?
    [Unknown]: XXXXXXX YYY
    What is the name of your organizational unit?
    [Unknown]: Example Software
    What is the name of your organization?
    [Unknown]: New Technology Company
    What is the name of your City or Locality?
    [Unknown]: Cupertino
    What is the name of your State or Province?
    [Unknown]: CA
    What is the two-letter country code for this unit?
    [Unknown]: US
    Is <CN=XXXXXXX YYY, OU=Example Software, O=New Technology Company,
     L=Cupertino, ST=CA, C=US> correct?
    [no]: yes
    
    Enter key password for <MyCert>
    (RETURN if same as keystore password): *********
    
  2. keytool -certreq」を使用して、証明書署名要求を生成します。結果をVeriSignまたはThawteのWebフォームにコピーおよびペーストします。次に例を示します。

    C:\Program Files\Java\jdk1.8.0\bin\keytool -certreq -alias MyCert
    
    Enter keystore password: *********
    -----BEGIN NEW CERTIFICATE REQUEST-----
    MIIBtjCCAR8CAQAwdjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwE
    AYDVQQHEwlDdXBlcnRpbm8xGTAXBgNVBAoTEFN1biBNaWNyb3N5c3RlbX
    MxFjAUBgNVBAsTDUphdmEgU29mdHdhcmUxEzARBgNVBAMTClN0YW5sZXk
    gSG8wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALTgU8PovA4y59eb
    oPjY65BwCSc/zPqtOZKJlaW4WP+UhmebE+T2Mho7P5zXjGf7elo3tV5uI
    3vzgGfnhgpf73EoMow8EJhly4w/YsXKqeJEqqvNogzAD+qUv7Ld6dLOv0
    CO5qvpmBAO6mfaI1XAgx/4xU/6009jVQe0TgIoocB5AgMBAAGgADANBgk
    qhkiG9w0BAQQFAAOBgQAWmLrkifKiUYtd4ykhBtPWSwW/IKkgyfIuNMML
    dF1DH8neSnXf3ZLI32f2yXvs7u3/xn6chnTXh4HYCJoGYOAbB3WNbAoQR
    i6u6TLLOvgv9pMNUo6v1qB0xly1faizjimVYBwLhOenkA3Bw7S8UIVfdv
    84cO9dFUGcr/Pfrl3GtQ==
    -----END NEW CERTIFICATE REQUEST-----
    
  3. CAにより、証明書応答チェーンが電子メールで送信されます。チェーンをコピーし、ファイルに保存します。keytool -importを使用して、チェーンをキーストア内にインポートします。次に例を示します。

    C:\Program Files\Java\jdk1.6.0\bin\keytool -import -alias MyCert -file VSSStanleyNew.cer
    
  4. 証明書およびサポートするチェーンの検証、およびキーストアへのインポートが行われます。これで、jarsignerを使用してJARファイルに署名する準備が整いました。


注意:

前述の手順のすべてで同じ別名を使用するか、別名を使用しないようにしてください。別名を使用しない場合、デフォルトの「mykey」が別名になります。

25.2.4 JARファイルへの署名

証明書、署名ツール、およびRIAのJARファイルがある場合、RIAに署名する準備ができています。

jarsignerを使用してアプレットに署名するには、次の手順を実行します。

  1. jarsignerを使用して、JARファイルに署名します。その際、前の手順で生成されたキーストアの証明書を使用します。指定された別名が同じであることを確認してください。次に例を示します。

    C:\Program Files\Java\jdk1.8.0\bin\jarsigner C:\TestApplet.jar MyCert
    Enter Passphrase for keystore: ********
    
  2. jarsigner -verify -verbose -certsを使用して、JARファイルを検証します。

    C:\Program Files\Java\jdk1.8.0\bin\jarsigner -verify -verbose
     -certs d:\TestApplet.jar
    
    
     245 Wed Mar 10 11:48:52 PST 2000 META-INF/manifest.mf
     187 Wed Mar 10 11:48:52 PST 2000 META-INF/MYCERT.SF
     968 Wed Mar 10 11:48:52 PST 2000 META-INF/MYCERT.RSA
    smk 943 Wed Mar 10 11:48:52 PST 2000 TestApplet.class
    smk 163 Wed Mar 10 11:48:52 PST 2000 TestHelper.class
    
     X.509, CN=XXXXXXX YYY, OU=Example Software,
     O=New Technology Company, L=Cupertino,
     ST=CA, C=US (mycert)
     X.509, CN=New Technology Company, OU=Java Plug-in QA,
     O=New Technology Company, L=Cupertino, ST=CA, C=US
     X.509, EmailAddress=server-certs@thawte.com,
     CN=Thawte Server CA, OU=Certification
     Services Division, O=Thawte Consulting cc,
     L=Cape Town, ST=Western Cape, C=ZA
    
    
     s = signature was verified
     m = entry is listed in manifest
     k = at least one certificate was found in keystore
     i = at least one certificate was found in identity scope
    
    jar verified.
    
  3. RIAの署名が適正に行われました。これで、署名付きRIAをデプロイする準備ができました。

25.3 RIAのデプロイ

RIAをデプロイするには、次の手順に従います。

  1. archivecache_archive、またはcache_archive_ex形式を使用して、HTMLページからJARファイルを参照します。

  2. JARファイルおよびHTMLページをWebサーバー上に配置します。

RIAが起動すると、次の項目が検証されます。

  1. RIAが正しく署名されていること。

  2. 証明書チェーンおよびルートCAが有効であること。

RIAが正しく署名されており、証明書チェーンおよびルートCAが有効な場合は、ユーザーにRIAの受入れまたはブロックを行うよう求めるセキュリティ・ダイアログが表示されます。詳細は、23.5項「セキュリティ・ダイアログ」を参照してください。

ユーザーがRIAの実行を許可するよう選択すると、対応するセキュリティ・コンテキスト内でRIAが実行されます。

目次      

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.