署名付きアプレット(Signed Applet)

キーペアの作成と署名

コマンドプロンプトを開いて、次の操作を行います。

C:\WINNT>cd \

C:\>md cert


C:\>cd cert

C:\cert>md org

C:\cert>copy c:\Tomcat4.1\webapps\webtribe\lib\*.jar org
            1 個のファイルをコピーしました。

C:\cert>dir org
 C:\cert\org のディレクトリ

2003/11/27  12:17              366,348 camc.jar
2003/09/28  18:14                 3,244 pmc_desktop.jar
2003/10/25  06:11              332,396 RuleCommonClient.jar
2003/10/25  06:11              535,391 RunClient.jar
2003/10/25  06:11                1,099  RunClientWdgs.jar
2003/12/01  15:00             150,643  user_rule.jar

C:\cert>keytool -genkey -keyalg rsa -storepass mkidev -alias jws -keypass mkidev -validity 365 -dname "cn=Webtribe, ou=Product, o=MKI, l=Osaka, st=Osaka, c=JP"

C:\cert>jarsigner -storepass mkidev -keypass mkidev -signedjar RunClient.jar org\RunClient.jar jws

C:\cert>dir

2003/12/03  09:57             557,847 RunClient.jar       <== 署名後の JAR ファイル

C:\cert>jarsigner -storepass mkidev -keypass mkidev -signedjar camc.jar org\camc.jar jws

C:\cert>jarsigner -storepass mkidev -keypass mkidev -signedjar RuleCommonClient.jar org\RuleCommonClient.jar jws

C:\cert>jarsigner -storepass mkidev -keypass mkidev -signedjar RunClientWdgs.jar org\RunClientWdgs.jar jws

C:\cert>jarsigner -storepass mkidev -keypass mkidev -signedjar user_rule.jar org\user_rule.jar jws

C:\cert>copy *.jar
c:\Tomcat4.1\webapps\webtribe\lib

署名によりJWS でのローカルリソースに対するアクセスを許可

JWS として実行する場合、JAR ファイルに対して署名を行っただけでは、ローカルリソースに対するアクセス権限を得ることはできません。
JNLP ファイルに次の記述を追加します。
コメントになっている場合は、コメントをはずします。
<security>
    <all-permissions/>
</security>

JWS 起動

この段階で JWS を起動すると、警告ダイアログが表示されます。

warning dialog

ここで「この証明書の信頼性を検証できません。コードの出所および妥当性を表明できません。このコードをインストールおよび実行しないことを強く お勧めします。」と表示されるのは、JAR ファイルの署名に使用したキーペアが認証局等の手続きを経ていないことにより、署名の正当性(本人の署名かどうか、第三者によって改ざんされていないかど うか、等)が証明できないためです。
このアプリケーションは正しいものであるという判断の元に、ダイアログの「開始」ボタンをクリックすると、クライアントが起動し、ローカルリソースにアクセスすることが可能になります。

「開始」ボタンをクリックするという操作は、ダウンロードしたアプリケーションを信頼するという意思表示になります。
一度「開始」ボタンをクリックすると、2回目以降の起動からは、警告ダイアログは表示されません。

証明書

JAR ファイルの署名に使用したキーペアの正当性を証明する方法のひとつとして、キーペアの証明書を各クライアントにインポートする、という方法があります。

まずキーペアから証明書をエクスポートします。
C:\cert>keytool -export -alias jws -file jws.cer -storepass mkidev -keypass mkidev

証明書がファイル <jws.cer> に保存されました。

エクスポートされた証明書 を各クライアントにインポートします。
  1. スタートメニューから Java Web Start アプリケーションマネージャを起動。
    メニューから [ファイル] - [設定] を選択し、設定ダイアログを開き、[ルート証明書]タブを選択します。
    JWS アプリケーションマネージャ

  2. [インポート]ボタンをクリックします。
    JWS ルート証明書

  3. ファイル選択ダイアログから証明書ファイル jws.cer を選択し、[開く]ボタンをクリックします。
    証明書選択

  4. インポートする証明書の別名と、Java Web Start が管理するキーストアのパスワードを入力します。
    証明書インポート

    ここで指定したパスワードが、以後 JWS が管理するキーストア(認証局の証明書管理用)のパスワードとして設定されます。
    (最初はパスワードは未設定の状態です。)

  5. 証明書の内容を確認して、[はい]をクリックします。
    証明書確認

  6. 証明書がインポートされました。
    証明書インポート完了
この段階で JWS を起動すると、ダイアログの内容が変わり、アプリケーションの正当性が表示されます。

セキュリティ警告ダイアログ

[開始]ボタンをクリックすると、クライアントが起動します。

認証局

作成したキーペアに対して認証局の署名を受けると、クライアントに証明書をインポートする作業なしに、アプリケーションの正当性が証明されるようになります。

このドキュメントの内容は Java 2 SDK 1.4.2_02 での動作をもとに作成していますが、1.3.1, 1.4.0, 1.4.1 でも大きな違いはありません。