注:この Java Plug-in ガイドでは、Java SE 6 update 10 リリースより前にリリースされた機能について説明します。最新情報については、Java Rich Internet Application の開発および配備を参照してください。

< 目次

RSA 証明書を使用したアプレットの署名

この章では次のトピックについて説明します。

はじめに

RSA 署名付きアプレットは、署名付きアプレットを容易に配備するためにサポートされています。ただし、RSA を介してアプレットに署名することは、アプレット開発の初心者の大半にとって引き続き難しい作業であり、この Java Plug-in 機能を十分に利用する上での障害となっています。このドキュメントでは、RSA 証明書を使用してアプレットに署名を行う手順を、順を追って説明します。アプレット開発の初心者は、この手順に従うことにより、多数の複雑なセキュリティー関連の問題に悩まされずに、アプレットに署名が行えるようになります。

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

  1. 署名ツール
  2. 公開鍵の RSA 鍵ペアおよび証明書チェーン
  3. JAR ファイルとしてバンドルされたアプレットおよびすべてのクラスファイル

署名ツール

Java Plug-in は、RSA を使用してアプレットに署名するために次のツールの形式をサポートしています。

  1. jarsigner—Java SDK の一部として提供されている署名ツール
  2. signtool— Navigator/Communicator でアプレットに署名を行うための、Netscape により提供されるツール。署名ツールおよびそのダウンロードの詳細は、http://www.mozilla.org/projects/security/pki/nss/tools のページを参照してください。

RSA 証明書の取得

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

Jarsigner を使用した証明書の取得

Jarsigner は、VeriSign や Thawte 証明書で動作することが知られており、証明書発行局に対しても動作可能です。Jarsigner を使用して、RSA 証明書を使用するアプレットに署名するには、VeriSign から Sun Java Signing 証明書を取得するか、Thawte から Java Code Signing 証明書を取得します。また、ほかの CA から類似の証明書を取得することもできます。証明書の登録処理中に、証明書署名要求 (CSR) を提出するよう求められます。CSR を生成するには、次の手順を実行します。

  1. keytool を使用して、RSA 鍵ペアを生成します (「-genkey -keyalg rsa」オプションを指定)。識別名に、VeriSign または Thawte で規定されたすべてのコンポーネントが含まれることを確認してください。次に例を示します。
    C:\Program Files\Java\jdk1.6.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.6.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 (たとえば VeriSign や Thawte) から電子メールで送付されます。チェーンをコピーし、ファイルに保存します。「keytool -import」を使用して、チェーンをキーストア内にインポートします。次に例を示します。
    C:\Program Files\Java\jdk1.6.0\bin\keytool -import -alias MyCert -file VSSStanleyNew.cer 
    
  4. RSA 証明書およびサポートするチェーンの検証、およびキーストアへのインポートが行われます。これで、jarsigner を使用して JAR ファイルに署名する準備が整いました。

注:

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

Netscape Signing Tool を使用した証明書の取得

大半の CA (VeriSign や Thawte など) は、Netscape Signing Tool をサポートしています。Netscape Signing Tool を使用して、RSA 証明書を使用するアプレットに署名するには、VeriSign から Netscape Object Signing 証明書を取得するか、Thawte から Netscape Object Signing 証明書を取得します。また、ほかの CA から類似の証明書を取得することもできます。登録処理中に、個人または会社情報の入力が求められます。これは、CA は、識別情報を検証してから証明書を発行する必要があるためです。この処理には、数時間から数日かかる場合があります。

発行された RSA 証明書は通常、次の 3 つのファイルで構成されます。

CA によっては、発行した証明書をフロッピーディスクに格納したり、Netscape Navigator/Communicator のセキュリティーモジュール内に直接格納することも可能です。証明書を入手後に、Netscape Signing Tool を使用して JAR ファイルに署名できます。 

Java アプレットを JAR ファイルとしてバンドルする

Jarsigner を使用して、RSA 証明書を使用するアプレットに署名する場合、アプレットを JAR ファイルとしてバンドルする必要があります。Java SE SDK に同梱された Jar ツール (コマンド jar ...) を、この目的で使用できます。次に例を示します。

C:\Program Files\Java\jdk1.6.0\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:\Program Files\Java\jdk1.6.0\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 ファイルとしてバンドルします。

Java アプレットの署名

RSA 証明書、署名ツール、およびアプレットの JAR ファイルが準備できたら、アプレットに署名できます。

jarsigner を使用したアプレットの署名

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

  1. jarsigner を使用して、JAR ファイルに署名します。その際、前の手順で生成されたキーストアの RSA 証明書を使用します。指定された別名が同じであることを確認してください。次に例を示します。
    C:\Program Files\Java\jdk1.6.0\bin\jarsigner C:\TestApplet.jar MyCert
    Enter Passphrase for keystore: ********
    
  2. jarsigner -verify -verbose -certs」を使用して、JAR ファイルを検証します。
    C:\Program Files\Java\jdk1.6.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. アプレットの署名が適正に行われました。これで、RSA 署名付きアプレットを配備できます。

Netscape Signing Tool を使用したアプレットの署名

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

  1. signtool -Lsigntool -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.
        
    
  2. 空のディレクトリを作成します。次に例を示します。
    mkdir signdir
    
  3. アプレットのクラスファイルをすべて、このディレクトリ内に配置します。

  4. 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
      
    
  5. 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=Example 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 署名付きアプレットの変換

既存の Netscape 用 RSA 署名付きアプレットは、Netscape 固有のセキュリティー API を使用することがあります。Java Plug-in は、これらの Netscape 固有 API をサポートしません。その代わり、Plug-in は標準 Java セキュリティー API を、Netscape Navigator と Internet Explorer の両方でサポートします。

Netscape セキュリティー API を使用する Netscape 署名付きアプレットを移行して Java Plug-in で動作させるには、次の操作を実行します。

  1. Java アプレット内の netscape.security.* 関連の文をすべてコメントにするか、削除します。
  2. アプレットを JAR ファイルとしてコンパイルし、アーカイブを作成します。
  3. Object Signing を使用して、JAR ファイルに再度署名します。

これにより、Netscape Navigator と Internet Explorer のどちらを使用する場合でも、RSA 署名付きアプレットが Java Plug-in で動作することが保証されます。

Microsoft Authenticode

Authenticode は、IE の JVM で署名付きアプレットをサポートするために、Win32 上の Microsoft Internet Explorer で使用される独自の署名技術です。Java Plug-in は Authenticode をサポートしません。その代わり、Java Plug-in は、IE と Netscape の両方で RSA 署名付きアプレットの使用をサポートします。

一般的な問題

 


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