注:この Java Plug-in ガイドでは、Java SE 6 update 10 リリースより前にリリースされた機能について説明します。最新情報については、Java Rich Internet Application の開発および配備を参照してください。
この章では次のトピックについて説明します。
jarsigner
を使用したアプレットの署名RSA 署名付きアプレットは、署名付きアプレットを容易に配備するためにサポートされています。ただし、RSA を介してアプレットに署名することは、アプレット開発の初心者の大半にとって引き続き難しい作業であり、この Java Plug-in 機能を十分に利用する上での障害となっています。このドキュメントでは、RSA 証明書を使用してアプレットに署名を行う手順を、順を追って説明します。アプレット開発の初心者は、この手順に従うことにより、多数の複雑なセキュリティー関連の問題に悩まされずに、アプレットに署名が行えるようになります。
アプレットに署名するには、次のものが必要です。
Java Plug-in は、RSA を使用してアプレットに署名するために次のツールの形式をサポートしています。
jarsigner
—Java SDK の一部として提供されている署名ツールsigntool
— Navigator/Communicator でアプレットに署名を行うための、Netscape により提供されるツール。署名ツールおよびそのダウンロードの詳細は、http://www.mozilla.org/projects/security/pki/nss/tools のページを参照してください。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:\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): *********
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-----
keytool -import
」を使用して、チェーンをキーストア内にインポートします。次に例を示します。
C:\Program Files\Java\jdk1.6.0\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 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 ファイルとしてバンドルします。
RSA 証明書、署名ツール、およびアプレットの JAR ファイルが準備できたら、アプレットに署名できます。
jarsigner
を使用したアプレットの署名jarsigner
を使用してアプレットに署名するには、次の手順を実行します。
jarsigner
を使用して、JAR ファイルに署名します。その際、前の手順で生成されたキーストアの RSA 証明書を使用します。指定された別名が同じであることを確認してください。次に例を示します。
C:\Program Files\Java\jdk1.6.0\bin\jarsigner C:\TestApplet.jar MyCert Enter Passphrase for keystore: ********
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.
signtool を使用してアプレットに署名するには、次の手順を実行します。
signtool -L
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=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 用 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 で動作することが保証されます。