JARファイルに署名することで、発行元の認証が可能になります。
jarsignerコマンドラインツールを使用してJARファイルに署名します。 jar属性で指定されたファイル名と、オプションのdestDirまたはsignedJar属性を取ります。ネストされたパスもサポートされますが、ここでは(オプションの)destDirのみが許可されます。出力先のディレクトリまたは明示的なJARファイル名が指定されていない場合、JARファイルはインプレースで署名されます。
依存関係ルール
trueの場合、このエイリアスによる署名が含まれていない場合のみJARファイルに署名されます。
falseの場合、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-group
でant.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以降。
一般的な公開タイムスタンプ認証局には、次のものがあります。