この章では以下について説明します。
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.db
key3.db
secmod.db
CA によっては、発行した証明書をフロッピーディスクに格納したり、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 で動作することが保証されます。