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