J Business Kitのプラグイン(以降JBKプラグイン)の使用で、JDK/JRE1.2.2以降を使用する場合のデジタル署名手順を説明します。署名ツールとしてkeytool/jarsigner/policytool(JDKのツール)を使用します。
Portable-ORBをダウンロードしない運用で使用する場合、またはプレインストール型Javaクライアントを使用する場合は、それぞれの環境のJavaライブラリに対しても、policytoolによる権限を設定する必要があります。Javaライブラリに対する権限の設定については、“5.5.3 Javaライブラリに対する権限の設定”を参照してください。
署名ツールの詳細については、JDKのドキュメントを参照してください。J Business Kitを使用している場合は、StudioまたはApworksの“J Business Kit オンラインマニュアル”を参照してください。
(1)鍵のペア(証明書)の作成
証明書に付加する情報、証明書にアクセスするための別名を指定して鍵のペア(証明書)を作成します。以下の実行例では、別名samplesigner、証明書有効期限を365日としています。
keytool -genkey -alias samplesigner -dname "cn=samplesigner, ou=JAVA PROJECT, o=FUJITSU, c=JA" -validity 365
鍵のペア(証明書)の生成を指定
注)JDK/JRE6以降、コマンドインタフェースが一部変更されました。JDK/JRE6以降を使用している場合、本オプションは“-genkeypair”と指定してください。
作成する鍵のペア(証明書)にアクセスするために別名を指定
署名者名、組織名、会社名、国名などを指定
証明書の有効期限を指定
コマンド入力時、キーストアのパスワード入力、作成する鍵のペア(証明書)のパスワード入力が求められます。これらのパスワードは、以降のキーストアへのアクセス、および作成した鍵のペア(証明書)へのアクセスで必要となります。
キーストアは鍵のペア(証明書)情報などを管理するデータベースであり、JDK/JREのインストール時には存在せず、keytoolコマンドの初回実施時に作成されます。
ここで作成された証明書と各クライアントマシンでインポートする証明書の作成時刻は、同一である必要があります。-dnameオプションに指定した内容が同一でも異なる時刻に作成された証明書は、別の証明書として認識されるため、注意してください。
(2)jarアーカイブファイルへの適用
作成した証明書を使用して、jarアーカイブファイルへデジタル署名を適用します。以下の実行例では、(1)で作成した証明書をSample.jarに署名します。
jarsigner -signedjar Sample.jar.sig Sample.jar samplesigner
署名を適用したjarファイルの名前を指定(省略時:署名元jarファイルと同一名)
証明元のjarファイルを指定
署名を行う証明書の別名を指定
コマンド入力時、キーストアのパスワード入力、鍵のペア(証明書)のパスワード入力が求められます。(1)で指定したパスワードを指定します。
jarアーカイブファイルの作成方法については、“5.1.4 Javaクラスファイルのアーカイブ”(プレインストール型Javaライブラリ)/“5.2.4 Javaクラスファイルのアーカイブ”(Portable-ORB)を参照してください。
同一の署名者で複数のjarアーカイブファイルを作成する場合は、(2)の処理を繰り返してください。
(3)jarアーカイブファイルへの署名適用の確認
署名を適用したjarアーカイブファイルに正常に署名が実施されていることを確認する場合は以下のコマンドを使用します。
jarsigner -verify Sample.jar.sig
jarアーカイブファイルのデジタル署名の検証を指定
デジタル署名の検証を行うjarアーカイブファイルを指定
正常にデジタル署名が実施されている場合は「jar verified」、また正常にデジタル署名が実施されていない場合は「jar is unsigned.(signatures missing or not parsable)」というメッセージが表示されます。
デジタル署名が正常に実施されていることを確認した後、jarファイルとして使用するために、拡張子を*.jarに変更します。たとえば、署名を施す前のSample.jarを削除し、Sample.jar.sigをSample.jarに変名します。
詳細なデジタル署名情報を表示する場合は、-verbose/-certsオプションを指定してコマンドを実行してください。
(4)証明書のエクスポート
アプレットをダウンロードするクライアントマシンにインポートするための証明書のエクスポートを行います。(1)鍵のペア(証明書)の作成で指定した別名を指定します。
keytool -export -alias samplesigner -file samplesign.cer
証明書の取り出しを指定
注)JDK/JRE6以降、コマンドインタフェースが一部変更されました。JDK/JRE6以降を使用している場合、本オプションは“-exportcert”と指定してください。
取り出しを行う証明書の別名を指定
取り出した証明書を格納するファイル名を指定
コマンド入力時、キーストアのパスワード入力が求められます。(1)で指定したパスワードを指定します。
(5)証明書のインポート
アプレットをダウンロードするクライアントマシンに証明書をインポートします。この作業は、クライアントマシンで行います。証明書samplesign.cerを事前にクライアントマシンにコピーしてください。
keytool -import -alias sampleuser -file samplesign.cer
証明書のインポートを指定
注)JDK/JRE6以降、コマンドインタフェースが一部変更されました。JDK/JRE6以降を使用している場合、本オプションは“-importcert”と指定してください。
インポートする証明書の別名を指定
インポートする証明書のファイル名を指定
コマンド入力時、キーストアのパスワード入力が求められます。これらのパスワードは、以降のキーストアへのアクセスで必要となります。また、インポートする証明書を信頼するかどうかの入力が求められるので「yes」と入力します。
コマンド入力時に指定した別名(-aliasで指定した別名)は、以降の操作で、証明書(-fileで指定した証明書)を指定するために必要となります。“(6)証明書への権限の設定”で権限を設定する際に、権限を設定する証明書の別名を指定してください。
(6)証明書への権限の設定
クライアントマシンにインポートした証明書に対して、権限を設定します。権限の設定は、policytoolコマンドを使用します。この作業は、クライアントマシンで行います。
policytoolコマンドは、JDK/JRE1.2以降に付属しているセキュリティポリシを定義するGUIツールです。
このコマンド使用して署名されているJavaクラス、および任意の場所に格納されているJavaクラスの権限の設定または変更を行います。policytoolコマンドの設定については、“5.8.5 policytoolコマンドの設定(補足)”を参照してください。