アプレット署名例

keytool用のキーストアファイル作成と確認

署名を行うには、公開鍵と非公開鍵(秘密鍵)のペアを作る必要があります。
sunのJava開発ツールには、このキーペアと証明書を管理するためのユーティリティとして keytoolのコマンドが用意されています。
詳細
これで管理される『キーペアと証明書』の複数を記憶するファイルが キーストアファイルです。
以下では、カレントディレクトリに、 .keystoreの名前のキーストアファイルを abc123のパスワードを必要とするように作成し、 その中にxyzの名前で、 デフォルト(DSA 鍵ペアおよび自己署名型証明書 (SHA1WithDSA) を生成しています)の 鍵ペアと証明書を追加している例です。 (.keystoreのファイルがない場合は、新規作成となります。)

JDK5 のkeytool実行例です。

D:\work>keytool -v --genkey -keystore ./.keystore -storepass abc123 -alias xyz
姓名を入力してください。
  [Unknown]:  tarou
組織単位名を入力してください。
  [Unknown]:  yyy
組織名を入力してください。
  [Unknown]:  xx
都市名または地域名を入力してください。
  [Unknown]:  shinjuku
州名または地方名を入力してください。
  [Unknown]:  tokyo
この単位に該当する 2 文字の国番号を入力してください。
  [Unknown]:  jp
CN=tarou, OU=yyy, O=xx, L=shinjuku, ST=tokyo, C=jp でよろしいですか?
  [no]:  yes

CN=tarou, OU=yyy, O=xx, L=shinjuku, ST=tokyo, C=jp 用の 1,024 ビット DSA 鍵ペア
および自己署名型証明書 (SHA1WithDSA) を生成しています。

<mykey> の鍵パスワードを入力してください。
        (キーストアのパスワードと同じ場合は RETURN を押してください):
[./.keystore を格納中]
D:\work>dir
 ドライブ D のボリューム ラベルがありません。
 ボリューム シリアル番号は F0AE-4830 です

 D:\work のディレクトリ

2010/02/21  14:32    <DIR>          .
2010/02/21  14:32    <DIR>          ..
2010/02/21  14:32             1,220 .keystore
               1 個のファイル               1,220 バイト
               2 個のディレクトリ     699,031,552 バイトの空き領域

D:\work>

上記では、-validity の有効期限を指定しませんでしたが、1年であれば -validity 365 と日数を指定します。 以上で作成したキーストアファイルの内容をリストアップした例を 以下に示します。

D:\work>keytool -v -list -keystore ./.keystore -storepass abc123 -alias xyz
別名: xyz
作成日: 2010/02/21
エントリのタイプ: keyEntry
証明連鎖の長さ: 1
証明書[1]:
所有者: CN=tarou, OU=yyy, O=xx, L=shinjuku, ST=tokyo, C=jp
実行者: CN=tarou, OU=yyy, O=xx, L=shinjuku, ST=tokyo, C=jp
シリアル番号: 4b80d89c
有効日: Sun Feb 21 15:54:20 JST 2010 有効期限: Sat May 22 15:54:20 JST 2010
証明書のフィンガープリント:
         MD5:  3C:51:61:8E:45:AA:6E:69:39:7D:74:87:BB:5C:D4:73
         SHA1: 01:F5:4B:04:EC:DD:92:91:55:5A:8D:44:9A:FE:E1:27:93:C1:B1:78

D:\work>

証明書エクスポート 以下でxyzの名前で記憶される証明書を 『userinfo.cer』のファイル名で出力(エクスポート) している例を示します。
このファイルuserinfo.cerは、ここでダウンロードできます。

D:\work>keytool -v -export -file userinfo.cer -keystore ./.keystore -storepass abc123 -alias xyz
証明書がファイル <userinfo.cer> に保存されました。

D:\work>

上記で作成した鍵ペアで、
  署名入りjarファイルを作成

jarファイルの署名に使うツールが jarsignerです。
以下では、『.keystore』の キーストアファイル(パスワード:abc123)内で、 xyzの名前を付けたキーペアを使い、 ..\work2\userinfo.jarのファイルを署名したファイルを userinfo.jarの名前で作成する例です。

D:\work>jarsigner -keystore .keystore -storepass abc123 -signedjar userinfo.jar ..\work2\userinfo.jar xyz

警告: 署名者の証明書は 6 か月以内に期限切れになります。

D:\work>

このように作成した アプレットのページの例を示します。











参考 keytoolだけ実行すると使い方情報が得られます

D:\work2>keytool
keytool の使い方:

-certreq     [-v] [-protected]
             [-alias <alias>] [-sigalg <sigalg>]
             [-file <csr_file>] [-keypass <keypass>]
             [-keystore <keystore>] [-storepass <storepass>]
             [-storetype <storetype>] [-providerName <name>]
             [-providerClass <provider_class_name> [-providerArg <arg>]] ...

-delete      [-v] [-protected] -alias <alias>
             [-keystore <keystore>] [-storepass <storepass>]
             [-storetype <storetype>] [-providerName <name>]
             [-providerClass <provider_class_name> [-providerArg <arg>]] ...

-export      [-v] [-rfc] [-protected]
             [-alias <alias>] [-file <cert_file>]
             [-keystore <keystore>] [-storepass <storepass>]
             [-storetype <storetype>] [-providerName <name>]
             [-providerClass <provider_class_name> [-providerArg <arg>]] ...

-genkey      [-v] [-protected]
             [-alias <alias>]
             [-keyalg <keyalg>] [-keysize <keysize>]
             [-sigalg <sigalg>] [-dname <dname>]
             [-validity <valDays>] [-keypass <keypass>]
             [-keystore <keystore>] [-storepass <storepass>]
             [-storetype <storetype>] [-providerName <name>]
             [-providerClass <provider_class_name> [-providerArg <arg>]] ...

-help

-identitydb  [-v] [-protected]
             [-file <idb_file>]
             [-keystore <keystore>] [-storepass <storepass>]
             [-storetype <storetype>] [-providerName <name>]
             [-providerClass <provider_class_name> [-providerArg <arg>]] ...

-import      [-v] [-noprompt] [-trustcacerts] [-protected]
             [-alias <alias>]
             [-file <cert_file>] [-keypass <keypass>]
             [-keystore <keystore>] [-storepass <storepass>]
             [-storetype <storetype>] [-providerName <name>]
             [-providerClass <provider_class_name> [-providerArg <arg>]] ...

-keyclone    [-v] [-protected]
             [-alias <alias>] -dest <dest_alias>
             [-keypass <keypass>] [-new <new_keypass>]
             [-keystore <keystore>] [-storepass <storepass>]
             [-storetype <storetype>] [-providerName <name>]
             [-providerClass <provider_class_name> [-providerArg <arg>]] ...

-keypasswd   [-v] [-alias <alias>]
             [-keypass <old_keypass>] [-new <new_keypass>]
             [-keystore <keystore>] [-storepass <storepass>]
             [-storetype <storetype>] [-providerName <name>]
             [-providerClass <provider_class_name> [-providerArg <arg>]] ...

-list        [-v | -rfc] [-protected]
             [-alias <alias>]
             [-keystore <keystore>] [-storepass <storepass>]
             [-storetype <storetype>] [-providerName <name>]
             [-providerClass <provider_class_name> [-providerArg <arg>]] ...

-printcert   [-v] [-file <cert_file>]

-selfcert    [-v] [-protected]
             [-alias <alias>]
             [-dname <dname>] [-validity <valDays>]
             [-keypass <keypass>] [-sigalg <sigalg>]
             [-keystore <keystore>] [-storepass <storepass>]
             [-storetype <storetype>] [-providerName <name>]
             [-providerClass <provider_class_name> [-providerArg <arg>]] ...

-storepasswd [-v] [-new <new_storepass>]
             [-keystore <keystore>] [-storepass <storepass>]
             [-storetype <storetype>] [-providerName <name>]
             [-providerClass <provider_class_name> [-providerArg <arg>]] ...


D:\work2>

参考 jarsignerだけで実行すると使い方情報が得られます

D:\work2>jarsigner
使い方: jarsigner [options] jar-file alias
       jarsigner -verify [options] jar-file

[-keystore <url>]           キーストアの位置

[-storepass <password>]     キーストア完全性のパスワード

[-storetype <type>]         キーストアの型

[-keypass <password>]       非公開鍵のパスワード (異なる場合)

[-sigfile <file>]           .SF/.DSA ファイルの名前

[-signedjar <file>]         署名付き JAR ファイルの名前

[-verify]                   署名付き JAR ファイルの検証

[-verbose]                  署名/検証時の詳細出力

[-certs]                    詳細出力および検証時に証明書を表示

[-tsa <url>]                タイムスタンプ局の場所

[-tsacert <alias>]          タイムスタンプ局の公開鍵証明書

[-altsigner <class>]        代替署名機構のクラス名

[-altsignerpath <pathlist>] 代替署名機構の位置

[-internalsf]               署名ブロックに .SF ファイルを含める

[-sectionsonly]             マニフェスト全体のハッシュは計算しない

[-protected]                認証パスが保護されたキーストア

[-providerName <name>]      プロバイダ名

[-providerClass <class>     暗号化サービスプロバイダの名前
  [-providerArg <arg>]] ... マスタークラスファイルとコンストラクタの引数


D:\work2>