この章では以下について説明します。
RSA 署名付きアプレットは、署名付きアプレットを容易に配備するためにサポートされています。ただし、RSA を介してアプレットに署名することは、アプレット開発の初心者の大半にとって依然として難しい作業であり、Java Plug-in の機能を十分に利用する上での障害となっています。このドキュメントでは、RSA 証明書を使用してアプレットに署名を行う手順を、順を追って説明します。アプレット開発の初心者は、この手順に従うことにより、多数の複雑なセキュリティ関連の問題に悩まされずに、アプレットに署名が行えるようになります。
アプレットに署名を行うには、以下が必要です。
アプレットの RSA 署名用に、2 つのタイプの署名ツールが、現在 Java Plug-in でサポートされています。
jarsigner ... です。signtool ... です。RSA 証明書は、VeriSign や Thawte など、RSA をサポートする証明書発行局 (CA) から購入できます。VeriSign などのいくつかの CA は、使用中の特定の署名ツールに基づき、別のプロトコルを証明書発行用に実装します。
Jarsigner は、VeriSign や Thawte 証明書で動作することが知られており、証明書発行局に対しても動作可能です。Jarsigner を使用して、RSA 証明書を使用するアプレットに署名するには、VeriSign から Sun Java Signing 証明書を取得するか、Thawte から Java Code Signing 証明書を取得します。また、他の CA から類似の証明書を取得することもできます。証明書の登録処理中に、証明書署名要求 (CSR) を提出するよう求められます。CSR を生成するには、次の手順を実行します。
keytool を使用して、RSA 鍵ペアを生成します (「-genkey -keyalg rsa」オプションを指定)。識別名に、VeriSign または Thawte で規定されたすべてのコンポーネントが含まれることを確認してください。次に例を示します。
    
C:\>C:\jdk1.3\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]: Java Software
What is the name of your organization?
[Unknown]: Sun Microsystems
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=Java Software, O=Sun Microsystems,
                L=Cupertino, ST=CA, C=US> correct?
[no]: yes
Enter key password for <MyCert>
(RETURN if same as keystore password): *********
  keytool -certreq」を使用して、証明書署名要求を生成します。結果を VeriSign または Thawte の Web フォームにコピー&ペーストします。次に例を示します。 
    C:\>C:\jdk1.3\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-----
keytool -import」を使用して、連鎖をキーストア内にインポートします。次に例を示します。
    C:\>C:\jdk1.3\bin\keytool -import -alias MyCert -file VSSStanleyNew.cer
jarsigner を使用して JAR ファイルに署名する準備が整いました。| 注:上記の手順すべてで同じ別名を使用するか、別名を使用しないようにしてください。別名を使用しない場合、デフォルトの「mykey」が別名になります。 | 
大半の CA (VeriSign や Thawte など) は、Netscape Signing Tool をサポートしています。Netscape Signing Tool を使用して、RSA 証明書を使用するアプレットに署名するには、VeriSign から Netscape Object Signing 証明書を取得するか、Thawte から Netscape Object Signing 証明書を取得します。また、他の CA から類似の証明書を取得することもできます。登録処理中に、個人または会社情報の入力が求められます。これは、CA は、識別情報を検証してから証明書を発行する必要があるためです。この処理には、数時間から数日かかる場合があります。
RSA 証明書の発行後、証明書は次の 3 つのファイルで構成されます。
cert7.dbkey3.dbsecmod.dbCA によっては、発行した証明書をフロッピーディスクに格納したり、Netscape Navigator/Communicator のセキュリティモジュール内に直接格納することも可能です。証明書を入手後に、Netscape Signing Tool を使用して JAR ファイルに署名できます。
 Jarsigner を使用して、RSA 証明書を使用するアプレットに署名する場合、アプレットを JAR ファイルとしてバンドルする必要があります。Java 2 SDK に同梱された Jar ツール (コマンド jar ...) を、この目的で使用できます。次に例を示します。
C:>C:\jdk1.3\bin\jar cvf C:\TestApplet.jar . added manifest adding: TestApplet.class (in = 94208) (out= 20103)(deflated 78%) adding: TestHelper.class (in = 16384) (out= 779)(deflated 95%)この例では、JAR ファイル C:\TestApplet.jar が作成されます。このファイルには、現在のディレクトリおよびそのサブディレクトリ内のファイルがすべて含まれます。
 JAR ファイルの作成後に、jar ツールを再度使用して内容を検証する必要があります。次に例を示します。
C:>C:\jdk1.3\bin\jar tvf TestApplet.jar 
     0 Mon Mar 06 18:02:54 PST 2000 META-INF/
    68 Mon Mar 06 18:02:54 PST 2000 META-INF/MANIFEST.MF
 94208 Wed Mar 10 11:48:52 PST 2000 TestApplet.class
 16384 Wed Mar 10 11:48:52 PST 2000 TestHelper.class
これにより、クラスファイルが JAR ファイル内に適切なパスを保持して格納されていることを確認できます。 
 Netscape Signing Tool を使用して RSA 証明書を保持するアプレットに署名するには、アプレットを C:\signdir などのディレクトリ内に配置する必要があります。署名処理の完了後に、Netscape Signing Tool はアプレットを JAR ファイルとしてバンドルします。
RSA 証明書、署名ツール、およびアプレットの JAR ファイルを取得できたら、アプレットに署名を行うことができます。
jarsigner を使用したアプレットの署名 jarsigner を使用してアプレットに署名するには、次の手順を実行します。
jarsigner を使用して、JAR ファイルに署名します。その際、前の手順で生成されたキーストアの RSA 証明書を使用します。指定された別名が同じであることを確認してください。次に例を示します。
    C:\>C:\jdk1.3\bin\jarsigner C:\TestApplet.jar MyCert Enter Passphrase for keystore: ********
jarsigner -verify -verbose -certs」を使用して、JAR ファイルの検証を行います。 
    C:>C:\jdk1.3\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=Java Software, 
                O=Sun Microsystems, L=Cupertino, 
                ST=CA, C=US (mycert)
      X.509, CN=Sun Microsystems, OU=Java Plug-in QA, 
                O=Sun Microsystems, 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.
  signtool を使用してアプレットに署名するには、次の手順を実行します。
signtool -L」を使用して、署名に使用する証明書のニックネームを決定します。次に例を示します。
    C:\signtool13WINNT40\signtool -L -d a:\cert
using certificate directory: a:\cert
S Certificates
- ------------
  AT&T Certificate Services
  Thawte Personal Premium CA
  GTE CyberTrust Secure Server CA
  Verisign/RSA Commercial CA
  AT&T Directory Services
  BelSign Secure Server CA
  BelSign Class 1 CA
  GTIS/PWGSC, Canada Gov. Web CA
  Thawte Personal Freemail CA
  Thawte Server CA
  GTIS/PWGSC, Canada Gov. Secure CA
  MCI Mall CA
  VeriSign Class 3 Primary CA
  VeriSign Class 4 Primary CA
  KEYWITNESS, Canada CA
  BelSign Class 2 CA
  BelSign Object Publishing CA
* Sun Microsystems, Inc.
  VeriSign Class 3 CA - Commercial Content/Software 
                        Publisher - VeriSign, Inc.
  Verisign/RSA Secure Server CA
  VeriSign Class 1 Primary CA
  BBN Certificate Services CA Root 1
  Thawte Personal Basic CA
* Sun Microsystems, Inc.'s VeriSign, Inc. ID
  CertiSign BR
  VeriSign Class 2 Primary CA
  Canada Post Corporation CA
  Integrion CA
  IBM World Registry CA
  BelSign Class 3 CA
  Uptime Group Plc. Class 1 CA
  Uptime Group Plc. Class 2 CA
  Thawte Premium Server CA
  Uptime Group Plc. Class 3 CA
  GTE CyberTrust Root CA
  Uptime Group Plc. Class 4 CA
- ------------
Certificates that can be used to sign objects 
have *'s to their left.
    
  mkdir signdir
signtool -Z」を使用して、アプレットに署名します。次に例を示します。
    
C:\signtool13>signtool -k "Sun Microsystems, Inc.'s VeriSign, Inc. ID" 
        -d a:\cert -Z c:\TestApplet.jar c:\signdir
using certificate directory: a:\cert
Generating c:\signdir/META-INF/manifest.mf file..
--> TestApplet.class
adding c:\signdir/TestApplet.class to c:\TestApplet.jar...
        (deflated 57%)
--> TestHelper.class
adding c:\signdir/TestHelper.class to c:\TestApplet.jar...
        (deflated 43%)
Generating zigbert.sf file..
adding c:\signdir/META-INF/manifest.mf to c:\TestApplet.jar...
        (deflated 44%)
adding c:\signdir/META-INF/zigbert.sf to c:\TestApplet.jar...
        (deflated 46%)
adding c:\signdir/META-INF/zigbert.rsa to c:\TestApplet.jar...
        (deflated 40%)
tree "c:\signdir" signed successfully
  
  signtool -w」を使用して、アーカイブを検証します。次に例を示します。
    C:\signtool13>signtool -w c:\TestApplet.jar -d a:\cert
using certificate directory: a:\cert
Signer information:
nickname: Sun Microsystems, Inc.'s VeriSign, Inc. ID
subject name: C=US, ST=CA, L=Palo Alto, OU=Java Software, 
        CN=Sun Microsystems, OU=Digital ID Class 3 - Netscape
Object Signing, OU="www.verisign.com/repository/RPA Incorp. 
        by Ref.,LIAB.LTD(c)99", OU=VeriSign Trust Network, 
        O="VeriSign, Inc."
issuer name: CN=VeriSign Class 3 CA - Commercial Content/Software 
        Publisher, OU="www.verisign.com/repository/RPA Incorp. 
        by Ref.,LIAB.LTD(c)98", OU=VeriSign Trust Network, 
        O="VeriSign, Inc."
  アプレットの署名が適正に行われました。これで、RSA 署名付きアプレットを配備できます。配備に関する情報は、「RSA 署名付きアプレットの配備方法」を参照してください。
既存の Netscape 用 RSA 署名付きアプレットは、Netscape 固有のセキュリティ API を使用することがあります。Java Plug-in は、これらの Netscape 固有 API をサポートしません。その代わり、Plug-in は標準 Java セキュリティ API を、Netscape Navigator と Internet Explorer の両方でサポートします。
Netscape セキュリティ API を使用する Netscape 署名付きアプレットを Java Plug-in で動作させるには、次の操作を実行します。
netscape.security.* 関連の文をすべてコメントにするか、削除します。これにより、Netscape Navigator と Internet Explorer のどちらを使用する場合でも、RSA 署名付きアプレットが Java Plug-in で動作することが保証されます。