SignJar

説明

JARファイルに署名することで、発行元の認証が可能になります。

jarsignerコマンドラインツールを使用してJARファイルに署名します。 jar属性で指定されたファイル名と、オプションのdestDirまたはsignedJar属性を取ります。ネストされたパスもサポートされますが、ここでは(オプションの)destDirのみが許可されます。出力先のディレクトリまたは明示的なJARファイル名が指定されていない場合、JARファイルはインプレースで署名されます。

依存関係ルール

パラメータ

属性 説明 必須
jar 署名するJARファイル はい、ネストされたパスを使用していない場合
alias 署名するエイリアス はい
storepass キーストアの整合性のためのパスワード。Antは-storepassコマンドライン引数は使用せず、パスワードを要求された際にjarsignerにパスワードを送信します。 はい
keystore キーストアの場所 いいえ
storetype キーストアの種類 いいえ
keypass 秘密鍵のパスワード(異なる場合) いいえ
sigfile .SF/.DSAファイルの名前 いいえ
signedjar 署名済みJARファイルの名前。jar属性が設定されている場合のみ設定できます。 いいえ
verbose (true|false) 署名時の詳細出力 いいえ。デフォルトはfalse
strict (true|false) 署名時の厳密なチェック。
Ant 1.9.1以降.
いいえ。デフォルトはfalse
internalsf (true|false) 署名ブロック内に.SFファイルを含める いいえ。デフォルトはfalse
sectionsonly (true|false) マニフェスト全体のハッシュを計算しない いいえ。デフォルトはfalse
lazy 署名ファイルの存在がJARファイルが署名済みであることを意味するかどうかを制御するフラグ。これは、ターゲットJARファイルとソースJARファイルが一致する場合のみ使用されます。 いいえ。デフォルトはfalse
maxmemory jarsigner JVMが使用する最大メモリを指定します。標準的なJavaメモリの仕様に従って指定します(例:128m = 128 MBytes) いいえ
preservelastmodified 署名済みファイルに、元のJARファイルと同じ最終更新時刻を設定します。 いいえ。デフォルトはfalse
tsaurl Java 5以降のタイムスタンプ付きJARファイルのタイムスタンプ認証局のURL いいえ
tsacert Java 5以降のタイムスタンプ付きJARファイルのタイムスタンプ認証局のキーストア内のエイリアス いいえ
tsaproxyhost TSAサーバーへの接続時に使用するプロキシホスト いいえ
tsaproxyport TSAサーバーへの接続時に使用するプロキシポート いいえ
executable デフォルトのバイナリ(Apache Antが実行されているのと同じJDKにある)の代わりに使用する特定のjarsigner実行可能ファイルを指定します。
Sun JDK jarsignerコマンドと同じコマンドラインオプションをサポートする必要があります。Ant 1.8.0以降
いいえ
force 期限切れではないか、既に署名済みではない場合でも、JARファイルの署名を強制的に実行するかどうか。Ant 1.8.0以降 いいえ。デフォルトはfalse
sigalg 署名アルゴリズムの名前 いいえ
digestalg ダイジェストアルゴリズムの名前 いいえ
tsadigestalg TSAダイジェストアルゴリズムの名前。Ant 1.10.2以降 いいえ
providername セキュリティプロパティファイルにリストされている暗号化サービスプロバイダの名前。Ant 1.10.6以降 いいえ
providerclass サービスプロバイダがセキュリティプロパティファイルにリストされていない場合の暗号化サービスプロバイダのマスタークラスファイルの名前。Ant 1.10.6以降 いいえ
providerarg providerclassが設定されていない場合は無視されます。provider_class_nameのコンストラクタに対するオプションの文字列入力引数を表します。Ant 1.10.6以降 いいえ

ネストされた要素としてのパラメータ

属性 説明 必須
path 署名するJARファイルのパス。Ant 1.7以降 いいえ
fileset 署名するJARファイルのfileset。 いいえ
mapper 署名中にJARファイルの名前を変更するためのmapper いいえ、1つだけ指定できます。
sysproperty Antの環境変数の構文に従ったJVMシステムプロパティ いいえ、1つだけ指定できます。
arg 属性では明示的にサポートされていないkeytoolコマンドライン引数を指定するために使用します。Ant 1.10.6以降 いいえ

コード署名証明書の生成方法については、keytoolのドキュメントおよび/または証明機関からの指示を参照してください。

secretパスワードを使用してキーストアと秘密鍵にアクセスし、エイリアスapache-groupant.jarに署名します。

<signjar jar="${dist}/lib/ant.jar"
         alias="apache-group" storepass="secret"/>

dist/**/*.jarパターンに一致するすべてのJARファイルに署名し、その後signedディレクトリにコピーします。flatten mapperを使用すると、サブディレクトリではなく、すべてこのディレクトリにコピーされます。

<signjar destDir="signed"
         alias="testonly" keystore="testkeystore"
         storepass="apacheant"
         preservelastmodified="true">
  <path>
    <fileset dir="dist" includes="**/*.jar"/>
  </path>
  <flattenmapper/>
</signjar>

dist/**/*.jar内のすべてのJARファイルにインプレースで署名します。遅延署名を使用するため、ファイルは既に署名されていない場合にのみ署名されます。

<signjar alias="testonly" keystore="testkeystore"
         storepass="apacheant"
         lazy="true">
  <path>
    <fileset dir="dist" includes="**/*.jar"/>
  </path>
</signjar>

ダイジェストアルゴリズムSHA1と署名アルゴリズムMD5withRSAを使用してdist/**/*.jar内のすべてのJARファイルに署名します。これは、SHA256およびSHA256withRSAをデフォルトで使用しているJDK 7 jarsignerを使用して、SHA256およびSHA256withRSAをサポートしていないプラットフォームにデプロイされる署名済みjarを作成する場合に特に役立ちます。

<signjar alias="testonly" keystore="testkeystore"
         storepass="apacheant"
         sigalg="MD5withRSA"
         digestalg="SHA1">
  <path>
    <fileset dir="dist" includes="**/*.jar"/>
  </path>
</signjar>

タイムスタンプ署名について

タイムスタンプは、署名が行われた日時を記録し、その時点での署名を検証できるようにします。信頼できるタイムスタンプを使用すると、ユーザーは証明書の有効期限または失効前に署名が行われたことを検証できます。このタイムスタンプがない場合、ユーザーは現在の日付でのみ署名を検証できます。

タイムスタンプ付きJARファイルはJava 5で導入され、Ant 1.7以降サポートされています。認証されていないプロキシを使用してTSAにアクセスできます。Ant 1.9.5以降

一般的な公開タイムスタンプ認証局には、次のものがあります。