TAK

ローカルファイルに読み書きする署名付きappletの作り方

java appletはセキュリティ上の制限で
ユーザのローカルファイルにアクセスできません。

java.security.AccessControlException: access denied (java.io.FilePermission . read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at java.io.File.exists(Unknown Source)
at javax.swing.JFileChooser.setCurrentDirectory(Unknown Source)
at javax.swing.JFileChooser.(Unknown Source)
at javax.swing.JFileChooser.(Unknown Source)

例外: java.security.AccessControlException: access denied (java.io.FilePermission . read)


しかし、書名付きアプレットでは
それが可能になります。



  1. 鍵ペアを作成

> keytool -genkey -keyalg rsa -storepass *** -alias appletkey -keypass *** -validity 90

こうすると....

姓名を入力してください。
[Unknown]:
組織単位名を入力してください。
[Unknown]:
組織名を入力してください。
[Unknown]:
都市名または地域名を入力してください。
[Unknown]:
州名または地方名を入力してください。
[Unknown]:
この単位に該当する 2 文字の国番号を入力してください。
[Unknown]:
CN= , OU= , O= , L= , ST= , C= でよろしいですか?
[no]:

  1. クラスファイルをjarファイルにする

> jar -cfM jarfile.jar classname.class classname$any.class

このように全部必要です。



  1. jarファイルに署名

> jarsigner -storepass *** -keypass *** -signedjar signedapplet.jar jarfile.jar appletkey


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


このようにappletを呼びます