Javaでビルド2

Prester画:Javaの父Gosling氏とDuke

Prester画:Javaの父James Gosling氏とDuke


※人物像はイメージです●参考資料:http://nighthacks.com/roller/jag/

Javaのサンドボックスとデジタル署名について

Javaのサンドボックス(sandbox=子供の遊び場である砂場)というのはセキュリティモデルのことです。ウェブページに配置されたFlashやJavaアプレット・JavaScriptなどのプログラムは自動的に実行されるため、ここで悪意のあるコード(コンピュータウイルスなど)が勝手に実行されないようにまず安全な領域=サンドボックス(セキュリティ)が用意されています。具体的な保護の仕組みとしてはファイルの読み書きを制限したり、送信の禁止など。


信頼する?しない?

Javaアプレットの電子署名はユーザーの信頼\許可を得ることによってサンドボックス(セキュリティ)の制限を一部緩和して貰えます。電子署名を施されたプログラムに限ってこの「保護された領域外」にアクセスすることができるようになるので、”信頼される” という用語はJava コードの実行が Java サンドボックス内に制限されないことを意味します。これを言い換えればユーザーにとって”信頼する”という選択(行為)はサンドボックスの制限を緩和してあげるよってことです。

MMF2でJavaアプレットに信頼証明が必要になるケースは「設定やスコアの保存」目的で「ini object」を使用することなどが考えられます。

参考URL:外部サンドボックス

信頼証明はどうやって付けるの?

Javaアプリケーションおよびアプレットを実行するためには「JRE(Java Runtime Environment)」が必要でしたが、署名付き JARファイルを作成するためにはJavaアプリケーションおよびアプレットを開発するための「Java SE JDK(単にJDKとも)のkeytoolなど」が必要になります。JDKにはJREが含まれているのですがJREにはJDKが含まれないので、MMF2アプリケーションの開発者はJava出力を考える場合JDKをインストールします。androidアプリを公開する場合にも開発でJavaを用いたら、アプリのパッケージにデジタル署名をつける必要があるのでやはり「keytool」を使います※1

※1:現状のAndroidではMMF2からビルドしたJavaアプリ(MIDP2.0)は普通グーグル独自のVM「Dalvik」上では動かないはずです。しかしApp RunnerUpOnTekといったコンバーター的な存在がありますのでこれを使えば現状のMMF2日本語版でもAndroid用に「野良apk」の作成は可能でした。コンバーターの精度がどの程度なのかテストが足りないので実用的なレベルかどうかは不明です。

keytoolってなに?

鍵と証明書を「keystore\キーストア」に格納するための、鍵と証明書の管理ツールが「keytool」です。キーストアは、非公開鍵をパスワードで保護します。ちなみにkeytoolはkeystore(キーストア)を一回設定したらあとはあんまり使いません。このあとたぶん頻繁に使うのは「jarsigner.exe」の方です。

jarsignerってなに?

署名付きファイルの生成、署名付き JARファイルの署名を検証するためのツールのことです。事前にkeytoolを使ってキーストア(データベース)に非公開鍵を登録したら今度はキーストアから署名を引っ張り出してきて、JARファイルに署名を付けます。で、パスワードで保護されてるので「keytool」で登録したパスワードがここで必要になるぞってわけです。

めんどくさい?

以上署名は二段階を得るということで、そのどちらもコマンドライン(CUI)なのでもともとプログラム知識が不要とされているMMF2ユーザー(GUI)にはどうしてもトッツキが悪いような?でも手順は覚えれば二つだけです、
  1. keytoolを使ってキーストアに登録する>パスワード(非公開鍵)などを登録>一回やればあとはしばらく必要ない
  2. jarsignerを使って署名を貼り付ける>パスワードを求められるので打ち込む>署名を付けるためには毎回これやる
あと細かいところでは、署名は有効期限が限られているのでオプション付けないと通常90日で期限切れとなる。開発者はパスを通しておくのが便利なのでOSのパス設定をこなしておいてください、とかかな。こうして見るとやはり色々準備やら予備知識やらが必要なのでFlashに比べてやや敷居は高いというかプログラマ寄りなのだと思う。

とりあえず次のページではJDKのダウンロードとインストールを行ってパスを通すところまでやってみましょう。(OSがウィンドウズだとして)JDKをインストールしたら環境変数に対して「${JAVA_HOME}/bin/」 にパスを通します。この手順は必須では無いけどこれもやった方があとで楽です。


カテゴリ:Java
>>次のページへ