どうして署名をするんだろう?
今回も前回に続きバッチファイルを用意しました。バッチファイルの中身を説明をします。
Jarsignerとは
未署名のJava ARchive (JAR) ファイルをデジタル署名付きにし、署名付きファイルの署名の完全性を検証するためのツールです。デジタル署名の完全性を検証するために前回keytoolでキーストアを作成した際に使用したパスワード(公開鍵と非公開鍵)が必要になります。また一度デジタル署名したファイルはアーカイブの内容を変更した場合、署名は無効となります。
参考外部資料:jarsigner – JAR 署名および検証ツール
バッチファイルでやってることの説明
keytoolで作成したキーストアの保存されているパスを指定します。
-storepass
キーストアはパスワードで保護されているのでアクセスするために必要なパスワードを入力します。
-keypass
非公開鍵を保護するのに使うパスワードを入力します。
-signedjar
署名付き JAR ファイルの名前を指定します。
個別の設定に関してはバッチファイル本体をテキストエディタ等で開いてそれを編集してください。署名付きファイルを保存する際に、ファイル名の重複を避けるためにタイムスタンプをファイル名に挿入してあります。あとはkeytoolの時と同じような要領なのであえて説明はしません。パスワードの取扱いに付いては注意してください。
ここの注意書き(キャッシュ)にも書いてありますが、バッチファイルなどで処理する場合システムの安全性が確保された環境であるかどうかまず確認をお願いします。当ブログが提供するすべてのバッチファイルはコマンドプロンプトに疎いであろう人のサポートのために作ったものなので、署名の意味がまったく分からないままの人のためにバッチファイルで処理することを推奨するものではありません。
余談
バッチファイルを作ろうと思ったのは本家CTのフォーラムでHow to sign an appletというのを見ていたのがきっかけです。「Signing Helper」というツールが作られていたので早速使ってみたのですがいまいち使いにくいと感じ、自分でもGUIのツールを作りはじめました。
結局バッチにコマンドを渡すだけなのでこんな大掛かりな仕掛けを作ること自体意味が無いということでモチベーションは下がりGUIのツールは完成の日の目を見ませんでした。しかしバッチファイルが完成したらしたで全自動化しちゃったので今度は署名の意味が分からないまま使う人がいても責任取れないな・・・と思い前段の注意書きを足しました。くれぐれもパスワードをテスト以外で「123456」とかはお止めください。
◆Jarsigner用バッチファイル
ダウンロード