annotate src/linux/doc/man/ja/jarsigner.1 @ 0:37a05a11f281

Initial load
author duke
date Sat, 01 Dec 2007 00:00:00 +0000
parents
children b056c42ea5b4
rev   line source
duke@0 1 '\" t
duke@0 2 .\"
duke@0 3 .\" Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
duke@0 4 .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@0 5 .\"
duke@0 6 .\" This code is free software; you can redistribute it and/or modify it
duke@0 7 .\" under the terms of the GNU General Public License version 2 only, as
duke@0 8 .\" published by the Free Software Foundation.
duke@0 9 .\"
duke@0 10 .\" This code is distributed in the hope that it will be useful, but WITHOUT
duke@0 11 .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@0 12 .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@0 13 .\" version 2 for more details (a copy is included in the LICENSE file that
duke@0 14 .\" accompanied this code).
duke@0 15 .\"
duke@0 16 .\" You should have received a copy of the GNU General Public License version
duke@0 17 .\" 2 along with this work; if not, write to the Free Software Foundation,
duke@0 18 .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@0 19 .\"
duke@0 20 .\" Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
duke@0 21 .\" CA 95054 USA or visit www.sun.com if you need additional information or
duke@0 22 .\" have any questions.
duke@0 23 .\"
duke@0 24 .\"
duke@0 25 .TH jarsigner 1 "2006 年 9 月 4 日" "Java SE 6" "ユーザーコマンド"
duke@0 26 .SH "名前"
duke@0 27 jarsigner \- JAR 署名および検証ツール
duke@0 28 .LP
duke@0 29 .RS 3
duke@0 30
duke@0 31 .LP
duke@0 32 .LP
duke@0 33 Java ARchive (JAR) ファイルの署名を生成し、署名付き JAR ファイルの署名を検証します。
duke@0 34 .LP
duke@0 35 .RE
duke@0 36 .SH "形式"
duke@0 37 .B jarsigner
duke@0 38 [
duke@0 39 .BI options
duke@0 40 ]
duke@0 41 jar-file alias
duke@0 42 .br
duke@0 43 .B jarsigner
duke@0 44 .BI \-verify
duke@0 45 [
duke@0 46 .BI options
duke@0 47 ]
duke@0 48 jar-file
duke@0 49 .SH "説明"
duke@0 50 .IX "JAR signing and verification tool " "" "JAR signing and verification tool \(em \fLjarsigner\fP"
duke@0 51 .IX "jarsigner" "" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 52 .B jarsigner
duke@0 53 ツールは、次の 2 つの目的で使用します。
duke@0 54 .TP 5
duke@0 55 1.
duke@0 56 Java ARchive (JAR) ファイルに署名を付ける
duke@0 57 .TP 5
duke@0 58 2.
duke@0 59 署名付き JAR ファイルの署名と完全性を検証する
duke@0 60 .LP
duke@0 61 JAR 機能を使うと、クラスファイル、イメージ、サウンド、およびその他のデジタルデータ
duke@0 62 を単一のファイルにパッケージ化できるので、ファイルを迅速かつ容易に配布できます。
duke@0 63 開発者は、
duke@0 64 .B jar
duke@0 65 という名前のツールを使って JAR ファイルを作成できます。技術的な観点から言えば、
duke@0 66 すべての ZIP ファイルも JAR ファイルとみなすことができます。
duke@0 67 .LP
duke@0 68 「デジタル署名」は、なんらかのデータ (「署名」の対象となるデータ) と、エンティティ
duke@0 69 (人、会社など) の非公開鍵とに基づいて計算されるビット列です。手書きの署名同様、
duke@0 70 デジタル署名には多くの利点があります。
duke@0 71 .TP 2
duke@0 72 \(bu
duke@0 73 署名の生成に使われた非公開鍵と対になる公開鍵を使って計算を行うことで、
duke@0 74 デジタル署名が本物かどうかを検証できる
duke@0 75 .TP 2
duke@0 76 \(bu
duke@0 77 非公開鍵が他人に知られない限り、デジタル署名の偽造は不可能である
duke@0 78 .TP 2
duke@0 79 \(bu
duke@0 80 デジタル署名は、その署名が付いたデータだけを対象とするものであり、ほかのデータの
duke@0 81 署名として機能することはない
duke@0 82 .TP 2
duke@0 83 \(bu
duke@0 84 署名付きのデータは変更できない。データが変更された場合は、その署名によってデータ
duke@0 85 が本物ではないことが検証される
duke@0 86 .LP
duke@0 87 ファイルに対してエンティティの署名を生成するには、まず、そのエンティティが公開鍵と
duke@0 88 非公開鍵のペアを持つ必要があります。また、公開鍵を認証する 1 つ以上の証明書も
duke@0 89 必要です。「証明書」とは、あるエンティティからのデジタル署名付きの文書のことです。
duke@0 90 証明書には、ほかのあるエンティティの公開鍵が特別な値を持っていることが書かれて
duke@0 91 います。
duke@0 92 .LP
duke@0 93 .B jarsigner
duke@0 94 は、「キーストア」に含まれる鍵と証明書情報を使って、JAR ファイルのデジタル署名を
duke@0 95 生成します。キーストアは、非公開鍵と、非公開鍵に関連付けられた X.509 証明連鎖が
duke@0 96 収められたデータベースです。証明連鎖は、非公開鍵に対応する公開鍵を認証します。
duke@0 97 キーストアの作成と管理には、
duke@0 98 .B keytool
duke@0 99 ユーティリティを使います。
duke@0 100 .LP
duke@0 101 .B jarsigner
duke@0 102 は、エンティティの非公開鍵を使って署名を生成します。署名付き JAR ファイルには、
duke@0 103 キーストアからの証明書のコピーが含まれています。これは、JAR ファイルの署名に使わ
duke@0 104 れた非公開鍵に対応する公開鍵の証明書のコピーです。
duke@0 105 .B jarsigner
duke@0 106 は、署名付き JAR ファイルのデジタル署名を、ファイル内 (の署名ブロックファイル) に含
duke@0 107 まれている証明書を使って検証することができます。
duke@0 108 .LP
duke@0 109 J2SE 5.0 以降の \f3jarsigner\fP は、タイムスタンプを含む署名を生成できるようになりました。このため、システム/デプロイヤ (Java Plug\-in など) は、署名付きの証明書がまだ有効である期間中に JAR ファイルの署名が行われたかどうかを確認できます。さらに、そのタイムスタンプ情報をアプリケーションが取得するための API が、J2SE 5.0 で追加されました。
duke@0 110 .LP
duke@0 111 現時点では、
duke@0 112 .B jarsigner
duke@0 113 で署名できるのは、JDK の
duke@0 114 .B jar
duke@0 115 ツールで作成された JAR ファイル、または ZIP ファイルだけです。JAR ファイルは ZIP ファイルと同じですが、JAR ファイルには
duke@0 116 .B META-INF/MANIFEST.MF
duke@0 117 ファイルが含まれている点が異なります。
duke@0 118 .B META-INF/MANIFEST.MF
duke@0 119 ファイルは、
duke@0 120 .B jarsigner
duke@0 121 が ZIP ファイルに署名を付けるときに自動的に作成されます。
duke@0 122 .LP
duke@0 123 デフォルトでは、
duke@0 124 .B jarsigner
duke@0 125 は JAR ファイルに「署名」を付けます。
duke@0 126 署名付き JAR ファイルを「検証」する場合は、
duke@0 127 .I -verify
duke@0 128 オプションを指定します。
duke@0 129 .SS
duke@0 130 JDK 1.1 との互換性
duke@0 131 .LP
duke@0 132 .IX "jarsigner" "Compatibility with JDK 1.1" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 133 .B keytool
duke@0 134 ツールと
duke@0 135 .B jarsigner
duke@0 136 ツールは、JDK 1.1 で提供されていた
duke@0 137 .B javakey
duke@0 138 ツールを完全に置き換えるものです。これらの新しいツールは
duke@0 139 .B javakey
duke@0 140 よりも多くの機能を備えており、キーストアと非公開鍵をパスワードで保護する機能や、
duke@0 141 署名の生成だけでなく署名を検証する機能を持っています。
duke@0 142 .LP
duke@0 143 新しいキーストアアーキテクチャは、
duke@0 144 .B javakey
duke@0 145 が作成して管理していたアイデンティティデータベースに代わるものです。キーストア形式と、JDK 1.1 の
duke@0 146 .B javakey
duke@0 147 が使っていたデータベース形式との間には下位互換性はありません。ただし、次のような
duke@0 148 ことは可能です。
duke@0 149 .TP 2
duke@0 150 \(bu
duke@0 151 .B keytool
duke@0 152
duke@0 153 .I -identitydb
duke@0 154 コマンドを使うと、アイデンティティデータベースの情報をキーストアにインポートできます。
duke@0 155 .TP 2
duke@0 156 \(bu
duke@0 157
duke@0 158 .B jarsigner
duke@0 159 は、以前に
duke@0 160 .B javakey
duke@0 161 を使って署名された JAR ファイルに署名を付けることができます。
duke@0 162 .TP 2
duke@0 163 \(bu
duke@0 164 .B jarsigner
duke@0 165 は、
duke@0 166 .B javakey
duke@0 167 を使って署名された JAR ファイルを検証できます。したがって、
duke@0 168 .B jarsigner
duke@0 169 は、JDK 1.2 のキーストアではなく JDK 1.1 のアイデンティティデータベースからの署名者別
duke@0 170 名を認識し、これらを対象に処理を行うことができます。
duke@0 171 .LP
duke@0 172 次の表は、JDK 1.1.x で署名された JAR ファイルが、Java 2 プラットフォームでどのように扱われるかを
duke@0 173 示しています。
duke@0 174 .LP
duke@0 175 .nf
duke@0 176 .ft 3
duke@0 177 1.1 データ
duke@0 178 1.1 データ ベースから ポリシー
duke@0 179 JAR ベース内の 1.2 キース ファイル
duke@0 180 ファイル アイデン トアにイン がアイデン 与えられる
duke@0 181 のタイプ ティティ ポートされ ティティ/ 特権
duke@0 182 る信頼でき 別名に特権
duke@0 183 るアイデン を与える
duke@0 184 ティティ(4)
duke@0 185
duke@0 186 署名付き すべてのコードに
duke@0 187 JAR x x x 与えられる
duke@0 188 デフォルトの
duke@0 189 特権
duke@0 190
duke@0 191 署名のない すべてのコードに
duke@0 192 JAR x x x 与えられる
duke@0 193 デフォルトの
duke@0 194 特権
duke@0 195
duke@0 196 署名付き すべてのコードに
duke@0 197 JAR x ○ x 与えられる
duke@0 198 デフォルトの
duke@0 199 特権
duke@0 200
duke@0 201 署名付き すべてのコードに
duke@0 202 JAR ○/信頼で x x 与えられる
duke@0 203 きない デフォルトの
duke@0 204 特権 (3)
duke@0 205
duke@0 206 署名付き すべてのコードに
duke@0 207 JAR ○/信頼で x ○ 与えられる
duke@0 208 きない デフォルトの
duke@0 209 特権 (1,3)
duke@0 210
duke@0 211 署名付き すべてのコードに
duke@0 212 JAR x ○ ○ 与えられる
duke@0 213 デフォルトの
duke@0 214 特権とポリシー
duke@0 215 ファイル内
duke@0 216 で与えられる
duke@0 217 特権
duke@0 218
duke@0 219 署名付き すべてのコードに
duke@0 220 JAR ○/信頼 ○ ○ 与えられる
duke@0 221 できる デフォルトの
duke@0 222 特権とポリシー
duke@0 223 ファイル内
duke@0 224 で与えられる
duke@0 225 特権 (2)
duke@0 226
duke@0 227 署名付き すべての
duke@0 228 JAR ○/信頼 x x 特権
duke@0 229 できる
duke@0 230 署名付き すべての
duke@0 231 JAR ○/信頼 ○ x 特権 (1)
duke@0 232 できる
duke@0 233 署名付き すべての
duke@0 234 JAR ○/信頼 x ○ 特権 (1)
duke@0 235 できる
duke@0 236 .fi
duke@0 237 .ft 1
duke@0 238 .LP
duke@0 239 注:
duke@0 240 .TP 5
duke@0 241 1.
duke@0 242 ポリシーファイル内にアイデンティティ/別名についての言及がある場合、
duke@0 243 それをキーストアにインポートして、ポリシーファイルの設定が与えられた
duke@0 244 特権に反映されるようにする必要があります。
duke@0 245 .TP 5
duke@0 246 2.
duke@0 247 ポリシーファイル/キーストアの組み合わせは、アイデンティティデータベース
duke@0 248 内の信頼できるアイデンティティよりも優先されます。
duke@0 249 .TP 5
duke@0 250 3.
duke@0 251 Java 2 プラットフォームでは、信頼できないアイデンティティは無視されます。
duke@0 252 .TP 5
duke@0 253 4.
duke@0 254 JDK キーストアにインポートできるのは、信頼できるアイデンティティだけです。
duke@0 255 .SS
duke@0 256 キーストアの別名
duke@0 257 .LP
duke@0 258 .IX "jarsigner" "Keystore Aliases" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 259 .LP
duke@0 260 キーストアのすべてのエントリは、一意の「別名」を介してアクセスされます。
duke@0 261 .LP
duke@0 262 .B jarsigner
duke@0 263 を使って JAR ファイルに署名を付けるときは、署名の生成に必要な非公開鍵を
duke@0 264 含むキーストアエントリの別名を指定する必要があります。たとえば、次の例は、
duke@0 265 working ディレクトリの
duke@0 266 .B mystore
duke@0 267 という名前のキーストアに含まれる別名
duke@0 268 .B duke
duke@0 269 に関連付けられた非公開鍵を使って、
duke@0 270 .BR MyJARFile.jar
duke@0 271 という名前の JAR ファイルに署名を付けます。出力ファイルは指定されていない
duke@0 272 ので、
duke@0 273 .BR MyJARFile.jar
duke@0 274 は署名付きの JAR ファイルによって上書きされます。
duke@0 275 .LP
duke@0 276 .ft 3
duke@0 277 .nf
duke@0 278 jarsigner -keystore /working/mystore -storepass
duke@0 279 myspass -keypass dukekeypasswd MyJARFile.jar duke
duke@0 280 .fi
duke@0 281 .ft 1
duke@0 282 .LP
duke@0 283 キーストアはパスワードで保護されているので、ストアのパスワード (上の例では
duke@0 284 .BR myspass
duke@0 285 ) を指定する必要があります。コマンド行でストアのパスワードを指定しなかった場合は、パスワードの入力を求められます。同様に、非公開鍵もキーストア内でパスワードによって保護されているので、非公開鍵のパスワード (上の例では
duke@0 286 .BR dukekeypasswd
duke@0 287 ) を指定する必要があります。コマンド行で非公開鍵のパスワードを指定しておらず、非公開鍵のパスワートがストアのパスワードと違っている場合は、非公開鍵のパスワードの入力を求められます。
duke@0 288 .LP
duke@0 289 .SS
duke@0 290 キーストアの場所
duke@0 291 .LP
duke@0 292 .IX "jarsigner" "Keystore Location" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 293 .LP
duke@0 294 .B jarsigner
duke@0 295 には、使用するキーストアの名前と場所を指定する
duke@0 296 .I -keystore
duke@0 297 オプションがあります。キーストアは、デフォルトではユーザのホームディレクトリの
duke@0 298 .I .keystore
duke@0 299 という名前のファイルに格納されます。ユーザのホームディレクトリは、
duke@0 300 .I user.home
duke@0 301 システムプロパティによって決まります。
duke@0 302 .LP
duke@0 303 .I \-keystore
duke@0 304 オプションからの入力ストリームは
duke@0 305 .I KeyStore.load
duke@0 306 メソッドに渡されます。
duke@0 307 URL として NONE が指定された場合は、NULL ストリームが
duke@0 308 .I KeyStore.load
duke@0 309 メソッドに渡されます。キーストアがハードウェアトークンデバイス上にあるなど、
duke@0 310 ファイルベースでない場合は、
duke@0 311 .I NONE
duke@0 312 を指定してください。
duke@0 313 .SS
duke@0 314 キーストアの実装
duke@0 315 .LP
duke@0 316 .IX "jarsigner" "Keystore Implementation" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 317 .LP
duke@0 318 .I java.security
duke@0 319 パッケージ内にある
duke@0 320 .I KeyStore
duke@0 321 クラス
duke@0 322 では、キーストア内の情報にアクセスし、変更できるように
duke@0 323 適切に定義されたインタフェースが提供されています。
duke@0 324 このクラスは複数のさまざまな固定実装が可能で、
duke@0 325 それぞれの実装は、特定の種類のキーストア用の固定実装です。
duke@0 326 .LP
duke@0 327 現在、キーストアの実装を使用するものとして、keytool と
duke@0 328 .BR jarsigner
duke@0 329 の 2 つのコマンド行ツールと、
duke@0 330 .BR policytool
duke@0 331 という名前の 1 つの GUI ベースのツールがあります。
duke@0 332 .I KeyStore
duke@0 333 クラスは public として使用可能なので、JDK ユーザは
duke@0 334 .B KeyStore
duke@0 335 を使ってほかのセキュリティアプリケーションも作成できます。
duke@0 336 .LP
duke@0 337 キーストアには、Sun が提供する組み込みのデフォルトの実装があります。これは、
duke@0 338 JKS という名前の独自のキーストアタイプ (形式) を利用するもので、キーストアを
duke@0 339 ファイルとして実装しています。この実装では、個々の非公開鍵は個別のパスワード
duke@0 340 によって保護され、キーストア全体の完全性も (非公開鍵とは別の) パスワードに
duke@0 341 よって保護されます。
duke@0 342 .LP
duke@0 343
duke@0 344 キーストアの実装は、プロバイダベースです。具体的には、
duke@0 345 .I KeyStore
duke@0 346 クラスが提供するアプリケーションインタフェースは、Service Provider Interface (SPI)
duke@0 347 という形で実装されています。つまり、対応する
duke@0 348 .I KeystoreSpi
duke@0 349 抽象クラス (これも
duke@0 350 .I java.security
duke@0 351 パッケージに含まれている) があり、このクラスが Service Provider Interface の
duke@0 352 メソッドを定義しています。これらのメソッドは、「プロバイダ」が実装しなければなりま
duke@0 353 せん。ここで、「プロバイダ」とは、Java Security API によってアクセス可能なサービス
duke@0 354 のサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合の
duke@0 355 ことです。したがって、キーストアの実装を提供するには、「Java 暗号化アーキテク
duke@0 356 チャ用プロバイダの実装方法」(http://java.sun.com/javase/6/docs/technotes/guides/security/HowToImplAProvider.html) のページで説明しているように、クライアントがプロバイダを実装し、
duke@0 357 .I KeystoreSpi
duke@0 358 サブクラスの実装を提供する必要があります。
duke@0 359 .LP
duke@0 360 アプリケーションでは、
duke@0 361 .I KeyStore
duke@0 362 クラスが提供する
duke@0 363 .B getInstance
duke@0 364 ファクトリメソッドを使うことで、さまざまなプロバイダから異なる「タイプ」のキーストアの
duke@0 365 実装を選択できます。キーストアのタイプは、キーストア情報の格納形式とデータ形式、
duke@0 366 およびキーストア内の非公開鍵とキーストア自体の完全性を保護するために使われる
duke@0 367 アルゴリズムを定義します。異なるタイプのキーストアの実装には、互いに互換性は
duke@0 368 ありません。keytool、jarsigner、および policytool の各ツールは、
duke@0 369 .B KeyStore
duke@0 370 が提供する共通のアプリケーションインタフェースだけを使っているので、任意の
duke@0 371 タイプのキーストアで使用できます。
duke@0 372 .LP
duke@0 373 .B keytool
duke@0 374 は、ファイルベースのキーストア実装に対して機能します。
duke@0 375 .B keytool
duke@0 376 は、コマンド行で渡されたキーストアの位置をファイル名として扱い、
duke@0 377 .BR FileInputStream
duke@0 378 に変換して、そこからキーストア情報をロードします。一方、
duke@0 379 .B jarsigner
duke@0 380 ツールおよび
duke@0 381 .B policytool
duke@0 382 ツールは、URL を使って指定することが可能な任意の位置にあるキーストアを
duke@0 383 読み取ることができます。
duke@0 384 .LP
duke@0 385 .B jarsigner
duke@0 386
duke@0 387 .BR keytool
duke@0 388 の場合、
duke@0 389 .I -storetype
duke@0 390 オプションを使ってコマンド行でキーストアのタイプを指定できます。
duke@0 391 .BR policytool
duke@0 392 の場合は、[Edit] メニューの [Change Keystore] コマンドを使ってキーストアの
duke@0 393 タイプを指定できます。
duke@0 394 .LP
duke@0 395 キーストアのタイプを明示的に指定しない場合、
duke@0 396 .B keytool
duke@0 397
duke@0 398 .B jarsigner
duke@0 399 、および
duke@0 400 .B policytool
duke@0 401 の各ツールは、セキュリティプロパティファイル内で指定
duke@0 402 された
duke@0 403 .I keystore.type
duke@0 404 プロパティの値に基づいてキーストアの実装を選択します。セキュリティプロパティファ
duke@0 405 イルは、
duke@0 406 .I java.security
duke@0 407 という名前でセキュリティプロパティディレクトリ
duke@0 408 .I java.home/lib/security
duke@0 409 に置かれています。
duke@0 410 .I java.home
duke@0 411 は、JDK の実行環境ディレクトリです。(SDK 内の jre ディレクトリ
duke@0 412 または Java Runtime Environment のトップレベルのディレクトリ)。
duke@0 413 .LP
duke@0 414 各ツールは、
duke@0 415 .I keystore.type
duke@0 416 の値を取得し、この値で指定されたタイプのキーストアを実装しているプロバイダが
duke@0 417 見つかるまで、現在インストールされているすべてのプロバイダを調べます。目的の
duke@0 418 プロバイダが見つかると、そのプロバイダからのキーストアの実装を使います。
duke@0 419 .LP
duke@0 420 .I KeyStore
duke@0 421 クラスでは
duke@0 422 .I getDefaultType
duke@0 423 という名前の static メソッドが定義されており、アプリケーションとアプレットはこの
duke@0 424 メソッドを使うことで
duke@0 425 .I keystore.type
duke@0 426 プロパティの値を取得できます。次のコードは、デフォルトのキーストアタイプ (
duke@0 427 .I keystore.type
duke@0 428 プロパティで指定されたタイプ) のインスタンスを生成します。
duke@0 429 .LP
duke@0 430 .nf
duke@0 431 \f3
duke@0 432 .fl
duke@0 433 KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
duke@0 434 .fl
duke@0 435 \fP
duke@0 436 .fi
duke@0 437
duke@0 438 .LP
duke@0 439 .LP
duke@0 440 デフォルトのキーストアタイプは jks (Sun が提供する独自のタイプのキーストアの
duke@0 441 実装) です。これは、セキュリティプロパティファイル内の次の行によって指定されて
duke@0 442 います。
duke@0 443 .LP
duke@0 444 .RS 5
duke@0 445 .B keystore.type=jks
duke@0 446 .RE
duke@0 447 .LP
duke@0 448 注: キーストアタイプの指定では、大文字と小文字は区別されません。たとえば、「JKS」と「jks」は同じものとみなされます。
duke@0 449 .LP
duke@0 450 各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して
duke@0 451 別のキーストアのタイプを指定します。
duke@0 452 たとえば、pkcs12 と呼ばれるタイプのキーストアの実装を提供している
duke@0 453 プロバイダパッケージを使用するには、上の行を次のように変更します。
duke@0 454 .LP
duke@0 455 .B keystore.type=pkcs12
duke@0 456 .LP
duke@0 457 PKCS#11 プロバイダパッケージを使用する場合、その詳細については、「Java PKCS#11 Reference Guide」(
duke@0 458 http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#keytooljarsigner)
duke@0 459 にある
duke@0 460 「\f2KeyTool and JarSigner\fP」節を参照してください。
duke@0 461 .LP
duke@0 462 .SS
duke@0 463 サポートされるアルゴリズム
duke@0 464 .LP
duke@0 465 .IX "jarsigner" "Supported Algorithms and Key Sizes" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 466 .LP
duke@0 467 デフォルトでは、
duke@0 468 .B jarsigner
duke@0 469 は次のどちらかのアルゴリズムを使って JAR ファイルに署名します。
duke@0 470 .TP 2
duke@0 471 \(bu
duke@0 472 SHA-1 ダイジェストアルゴリズムを使った DSA (デジタル署名アルゴリズム)
duke@0 473 .TP 2
duke@0 474 \(bu
duke@0 475 MD5 ダイジェストアルゴリズムを使った RSA アルゴリズム
duke@0 476 .LP
duke@0 477 具体的には、署名者の公開鍵と非公開鍵が DSA 鍵である場合、
duke@0 478 .B jarsigner
duke@0 479 は「SHA1withDSA」アルゴリズムを使って JAR ファイルに署名を付けようとします。署名者の
duke@0 480 鍵が RSA 鍵である場合、
duke@0 481 .B jarsigner
duke@0 482 は「MD5withRSA」アルゴリズムを使って JAR ファイルに署名を付けます。
duke@0 483 .LP
duke@0 484 これらのデフォルトの署名アルゴリズムは、\f2\-sigalg\fP オプションを使ってオーバーライドできます。
duke@0 485 .LP
duke@0 486 .SS
duke@0 487 署名付き JAR ファイル
duke@0 488 .LP
duke@0 489 .IX "jarsigner" "The Signed JAR File" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 490 .LP
duke@0 491 .B jarsigner
duke@0 492 を使って JAR ファイルに署名を付けた場合、出力される署名付き JAR ファイルは
duke@0 493 入力 JAR ファイルと同じですが、次の 2 つの追加ファイルが
duke@0 494 .B META-INF
duke@0 495 ディレクトリに置かれる点が異なります。
duke@0 496 .TP 2
duke@0 497 \(bu
duke@0 498 .B .SF
duke@0 499 拡張子の付いた署名ファイル
duke@0 500 .TP 2
duke@0 501 \(bu
duke@0 502 .B .DSA
duke@0 503 拡張子の付いた署名ブロックファイル
duke@0 504 .LP
duke@0 505 これら 2 つのファイルのベースファイル名は、
duke@0 506 .I -sigFile
duke@0 507 オプションの値から作成されます。たとえば、次のようにオプションを指定したとします。
duke@0 508 .LP
duke@0 509 .B -sigFile MKSIGN
duke@0 510 .LP
duke@0 511 この場合、ファイル名はそれぞれ
duke@0 512 .B MKSIGN.SF
duke@0 513
duke@0 514 .BR MKSIGN.DSA
duke@0 515 になります。
duke@0 516 .LP
duke@0 517 コマンド行に
duke@0 518 .I -sigfile
duke@0 519 オプションの指定がない場合、
duke@0 520 .B .SF
duke@0 521 ファイルと
duke@0 522 .B .DSA
duke@0 523 ファイルのベースファイル名は、コマンド行で指定された別名の先頭の 8 文字を
duke@0 524 すべて大文字に変換したものになります。別名が 8 文字未満の場合は、別名が
duke@0 525 そのまま使われます。別名の中に、署名ファイル名に使用できない文字が含まれ
duke@0 526 ている場合は、該当する文字を下線 (_) に置き換えてファイル名が作成されます。
duke@0 527 使用できる文字は、アルファベット、数字、下線 (_)、ハイフンです。
duke@0 528 .LP
duke@0 529 署名 (\f3.SF\f1) ファイル
duke@0 530 .LP
duke@0 531 署名ファイル (
duke@0 532 .B .SF
duke@0 533 ファイル) は、
duke@0 534 .B jar
duke@0 535 ツールで生成された JAR ファイルに常に含まれるマニフェストファイルと似ています。つまり、マニフェストファイル同様、
duke@0 536 .B .SF
duke@0 537 ファイルには、JAR ファイルに含まれているソースファイルごとに、次の 3 つの行があります。
duke@0 538 .TP 2
duke@0 539 \(bu
duke@0 540 ファイル名
duke@0 541 .TP 2
duke@0 542 \(bu
duke@0 543 使われているダイジェストアルゴリズム (SHA) の名前
duke@0 544 .TP 2
duke@0 545 \(bu
duke@0 546 SHA ダイジェストの値
duke@0 547 .LP
duke@0 548 マニフェストファイルでは、SHA ダイジェストの値は、ソースファイルのバイナリデータ
duke@0 549 のダイジェスト (ハッシュ) です。一方、
duke@0 550 .B .SF
duke@0 551 ファイルでは、ソースファイルのダイジェストの値は、マニフェストファイル中の該当する
duke@0 552 ソースファイルに対応する 3 行のハッシュです。
duke@0 553 .LP
duke@0 554 署名ファイルには、デフォルトでマニフェストファイル全体のハッシュも含まれています。
duke@0 555 後述の「JAR ファイルの検証」で説明するように、このヘッダの存在によって検証の
duke@0 556 最適化が可能になっています。
duke@0 557 .LP
duke@0 558 署名ブロック (\f3.DSA\f1) ファイル
duke@0 559 .LP
duke@0 560 .B .SF
duke@0 561 ファイルには署名が付けられ、署名は
duke@0 562 .B .DSA
duke@0 563 ファイルに置かれます。
duke@0 564 .B .DSA
duke@0 565 ファイルには、キーストアからの証明書または証明連鎖も符号化された形で含まれて
duke@0 566 います。証明書または証明連鎖は、署名に使われた非公開鍵に対応する公開鍵を
duke@0 567 認証します。
duke@0 568 .LP
duke@0 569 .SS
duke@0 570 署名タイムスタンプ
duke@0 571 .LP
duke@0 572 .LP
duke@0 573 J2SE 5.0 リリースの
duke@0 574 .I jarsigner
duke@0 575 ツールは、JAR ファイルの署名時に署名タイムスタンプを生成および格納できるようになりました。さらに、
duke@0 576 .I jarsigner
duke@0 577 は代替の署名機構もサポートします。この動作は省略可能で、署名時に次の各オプションによって制御されます。
duke@0 578 .LP
duke@0 579 .RS 3
duke@0 580 .TP 2
duke@0 581 o
duke@0 582 \f2\-tsa url\fP
duke@0 583 .TP 2
duke@0 584 o
duke@0 585 \f2\-tsacert alias\fP
duke@0 586 .TP 2
duke@0 587 o
duke@0 588 \f2\-altsigner class\fP
duke@0 589 .TP 2
duke@0 590 o
duke@0 591 \f2\-altsignerpath classpathlist\fP
duke@0 592 .RE
duke@0 593
duke@0 594 .LP
duke@0 595 .LP
duke@0 596 これらの各オプションの詳細については、後述の「オプション」節を参照してください。
duke@0 597 .LP
duke@0 598 .SS
duke@0 599 JAR ファイルの検証
duke@0 600 .LP
duke@0 601 .IX "jarsigner" "JAR File Verification" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 602 .LP
duke@0 603 JAR ファイルの検証が成功するのは、署名が有効であり、かつ署名の生成以後に
duke@0 604 JAR ファイル内のどのファイルも変更されていない場合です。JAR ファイルの検証は、次の手順で行われます。
duke@0 605 .TP 5
duke@0 606 1.
duke@0 607 .B .SF
duke@0 608 ファイルそれ自体の署名を検証します。
duke@0 609 .RS
duke@0 610 .LP
duke@0 611 この手順では、各署名ブロック (
duke@0 612 .B .DSA
duke@0 613 ) ファイルに格納されている署名が、実際に、公開鍵に対応する非公開鍵を使って
duke@0 614 生成されたものであることを確認します。
duke@0 615 .B .DSA
duke@0 616 ファイルには、公開鍵の証明書も含まれています。また、この手順
duke@0 617 では、目的の署名が、対応する署名 (
duke@0 618 .B .SF
duke@0 619 ) ファイル内の有効な署名であるかどうかを調べ、
duke@0 620 .B .SF
duke@0 621 ファイルが改変されていないことも確認します。
duke@0 622 .RE
duke@0 623 .TP 5
duke@0 624 2.
duke@0 625 .B .SF
duke@0 626 ファイル内の各エントリのダイジェストをマニフェスト内の対応する各セクションと突き
duke@0 627 合わせて検証します。
duke@0 628 .RS
duke@0 629 .LP
duke@0 630 .B .SF
duke@0 631 ファイルには、マニフェストファイル全体のハッシュが格納されたヘッダがデフォルトで
duke@0 632 含まれています。このヘッダが存在する場合は、ヘッダ内のハッシュが実際にマニフェ
duke@0 633 ストファイルのハッシュと一致するかどうかを検証することができます。ハッシュが一致す
duke@0 634 る場合は、次の手順に進みます。
duke@0 635 .LP
duke@0 636 ハッシュが一致しない場合は、効率的には劣る方法を使って検証を行います。具体的
duke@0 637 には、
duke@0 638 .B .SF
duke@0 639 ファイル内の各ソースファイル情報セクションのハッシュが、マニフェストファイル内の
duke@0 640 対応するセクションのハッシュと一致するかどうかを確認します (「署名 (\f3.SF\f1)
duke@0 641 ファイル」を参照)。
duke@0 642 .LP
duke@0 643 .B .SF
duke@0 644 ファイルのヘッダに格納されたマニフェストファイルのハッシュと、実際のマニフェスト
duke@0 645 ファイルのハッシュとが一致しない場合は、署名 (および
duke@0 646 .B .SF
duke@0 647 ファイル) の生成後に、ファイルに 1 つ以上のファイルが追加 (
duke@0 648 .I jar
duke@0 649 ツールを使用) された可能性があります。
duke@0 650 .I jar
duke@0 651 ツールを使ってファイルを追加した場合、マニフェストファイルは変更されますが
duke@0 652 (新しいファイル用のセクションが追加される)、
duke@0 653 .B .SF
duke@0 654 ファイルは変更されません。この場合、
duke@0 655 .B .SF
duke@0 656 ファイルのヘッダ以外のセクションに格納されたハッシュが、マニフェストファイル内の
duke@0 657 対応するセクションのハッシュと一致するときは、署名の生成時に JAR ファイル内に
duke@0 658 存在していたファイルのうち、どのファイルも変更されていないことになり、検証は成功
duke@0 659 したものとして扱われます。
duke@0 660 .RE
duke@0 661 .TP 5
duke@0 662 3.
duke@0 663 JAR ファイル内のファイルのうち、
duke@0 664 .B .SF
duke@0 665 ファイル内にエントリを持つ各ファイルを読み込みます。読み込み中にファイルの
duke@0 666 ダイジェストを計算し、結果をマニフェストセクション内の該当するファイルの
duke@0 667 ダイジェストと比較します。2 つのダイジェストは同じでなければならず、そうでない
duke@0 668 場合は検証が失敗します。
duke@0 669 .LP
duke@0 670 検証プロセスの途中でなんらかの重大な検証エラーが発生した場合、検証プロセス
duke@0 671 は中止され、セキュリティ例外がスローされます。スローされたセキュリティ例外は、
duke@0 672 .BR jarsigner
duke@0 673 がキャッチして表示します。
duke@0 674 .LP
duke@0 675 .SS
duke@0 676 1 つの JAR ファイルを対象とする複数の署名
duke@0 677 .LP
duke@0 678 .IX "jarsigner" "Multiple Signatures for a JAR File" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 679 .LP
duke@0 680 1 つの JAR ファイルに対して
duke@0 681 .B jarsigner
duke@0 682 ツールを複数回実行し、実行のたびに、異なるユーザの別名を指定すれば、JAR
duke@0 683 ファイルに複数のユーザの署名を付けることができます。たとえば、次のようにします。
duke@0 684 .LP
duke@0 685 .ft 3
duke@0 686 .nf
duke@0 687 jarsigner myBundle.jar susan
duke@0 688 jarsigner myBundle.jar kevin
duke@0 689 .fi
duke@0 690 .ft 1
duke@0 691 .LP
duke@0 692 JAR ファイルが複数回署名されている場合、その JAR ファイルには
duke@0 693 .B .SF
duke@0 694 ファイルと
duke@0 695 .B .DSA
duke@0 696 ファイルの対が複数含まれることになります。
duke@0 697 .B .SF
duke@0 698 ファイルと
duke@0 699 .B .DSA
duke@0 700 ファイルの対は、1 回の署名に対して 1 つ作成されます。したがって、上の例で出力
duke@0 701 される JAR ファイルには、次の名前を持つファイルが含まれます。
duke@0 702 .LP
duke@0 703 .ft 3
duke@0 704 .nf
duke@0 705 SUSAN.SF
duke@0 706 SUSAN.DSA
duke@0 707 KEVIN.SF
duke@0 708 KEVIN.DSA
duke@0 709 .fi
duke@0 710 .ft 1
duke@0 711 .LP
duke@0 712 注: JDK 1.1 の
duke@0 713 .B javakey
duke@0 714 ツールで生成した署名と、
duke@0 715 .B jarsigner
duke@0 716 で生成した署名というように、
duke@0 717 1 つの JAR ファイルに署名を混在させることができます。
duke@0 718 つまり
duke@0 719 .B javakey
duke@0 720 ですでに以前署名した JAR ファイルに署名するために、
duke@0 721 .B jarsigner
duke@0 722 を使用できます。
duke@0 723 .SH "オプション"
duke@0 724 .LP
duke@0 725 以下では、
duke@0 726 .B jarsigner
duke@0 727 のオプションについて説明します。オプションを指定するときは、次の点に注意
duke@0 728 してください。
duke@0 729 .TP 2
duke@0 730 \(bu
duke@0 731 どのオプション名にも先頭にマイナス記号 (-) が付く
duke@0 732 .TP 2
duke@0 733 \(bu
duke@0 734 オプションは任意の順序で指定できる
duke@0 735 .TP 2
duke@0 736 \(bu
duke@0 737 イタリック体の項目の実際の値 (オプションの値) は、ユーザが指定する必要がある
duke@0 738 .TP 2
duke@0 739 \(bu
duke@0 740 .I -keystore、
duke@0 741 .I -storepass、
duke@0 742 .I -keypass、
duke@0 743 .I -sigfile、
duke@0 744 .I -sigalg、
duke@0 745 .I -digestalg、
duke@0 746 および
duke@0 747 .I -signedjar
duke@0 748 の各オプションを使用できるのは、JAR ファイルに署名を付ける場合だけである。
duke@0 749 これらのオプションは、JAR ファイルを検証する場合には使用できない。同様に、
duke@0 750 別名をコマンド行で指定するのは、JAR ファイルに署名を付ける場合だけである
duke@0 751 .LP
duke@0 752 .RS 3
duke@0 753 .TP 3
duke@0 754 .B -keystore url
duke@0 755 キーストアの場所を示す URL を指定します。デフォルトは、ユーザのホームディレクト
duke@0 756 リ内のファイル
duke@0 757 .I .keystore
duke@0 758 です。ユーザのホームディレクトリは、
duke@0 759 .I user.home
duke@0 760 システムプロパティによって決まります。
duke@0 761 .LP
duke@0 762 署名するときはキーストアが必要です。このため、デフォルトのキーストアが存在
duke@0 763 しない場合、あるいはデフォルト以外のほかのキーストアを使用する場合は、
duke@0 764 キーストアを明示的に指定する必要があります。
duke@0 765 .LP
duke@0 766 検証するときはキーストアは必要ありません。ただし、キーストアが指定されているか、
duke@0 767 あるいはデフォルトのキーストアが存在していて、さらに
duke@0 768 .I -verbose
duke@0 769 オプションも指定されている場合は、JAR ファイルの検証に使われる証明書が
duke@0 770 キーストアに存在するかどうかについての追加情報が出力されます。
duke@0 771 .LP
duke@0 772 注:
duke@0 773 .I -keystore
duke@0 774 の引数には、URL の代わりにファイル名 (とパス) を指定できます。ファイル名
duke@0 775 (とパス) を指定した場合は、「file:」URL として扱われます。たとえば、次のように
duke@0 776 指定できます。
duke@0 777 .LP
duke@0 778 .B -keystore filePathAndName
duke@0 779 .LP
duke@0 780 これは、次の指定と同じものとして扱われます。
duke@0 781 .LP
duke@0 782 .B -keystore file:filePathAndName
duke@0 783 .LP
duke@0 784 \fP
duke@0 785 .fi
duke@0 786 JRE の \f2$JAVA_HOME/lib/security\fP ディレクトリに格納された \f2java.security\fP セキュリティプロパティファイル内で Sun PKCS#11 プロバイダが設定されている場合、keytool と jarsigner は PKCS#11 トークンに基づいて動作できます。次のオプションを指定します。
duke@0 787 .RS 3
duke@0 788 .TP 2
duke@0 789 o \f2\-keystore NONE\fP
duke@0 790 .TP 2
duke@0 791 o \f2\-storetype PKCS11\fP
duke@0 792 .RE
duke@0 793 たとえば、次のコマンドは、設定された PKCS#11 トークンの内容を一覧表示します。
duke@0 794 .RS 3
duke@0 795
duke@0 796 .LP
duke@0 797 .nf
duke@0 798 \f3
duke@0 799 .fl
duke@0 800 jarsigner \-keystore NONE \-storetype PKCS11 \-list
duke@0 801 .fl
duke@0 802
duke@0 803 .fl
duke@0 804 \fP
duke@0 805 .fi
duke@0 806 .RE
duke@0 807 .TP 3
duke@0 808 .B -storetype storetype
duke@0 809 インスタンスを生成するキーストアのタイプを指定します。デフォルトのキーストアの
duke@0 810 タイプは、セキュリティプロパティファイルで keystore.type プロパティの値として
duke@0 811 指定されたタイプで、
duke@0 812 .I java.security.KeyStore
duke@0 813 の static
duke@0 814 .I getDefaultType
duke@0 815 メソッドによって返されます。
duke@0 816 .LP
duke@0 817 \f2\-storepass\fP オプションを使って PCKS#11 トークンの PIN を指定することも
duke@0 818 できます。何も指定しなかった場合、keytool と jarsigner はユーザにトークン PIN の
duke@0 819 入力を求めます。トークンの認証パスが、専用の PIN パッドやバイオメトリックリーダの
duke@0 820 ような保護されたパスである場合、\f2\-protected\fP オプションを指定する必要があります。
duke@0 821 この場合、パスワードオプションは指定できません。
duke@0 822 .TP
duke@0 823 .B -storepass password
duke@0 824 キーストアにアクセスするのに必要なパスワードを指定します。このオプションが必要
duke@0 825 なのは、JAR ファイルに署名を付けるときだけです (JAR ファイルを検証するときは
duke@0 826 不要)。署名を付けるときに、コマンド行で
duke@0 827 .I -storepass
duke@0 828 オプションを指定しなかった場合は、パスワードの入力を求められます。
duke@0 829 .RS
duke@0 830 .LP
duke@0 831 注: テストを目的とする場合、または安全が保障されたシステムで実行する場合
duke@0 832 以外は、コマンド行やスクリプトでパスワードを指定しないでください。また、
duke@0 833 password プロンプトでパスワードを入力すると、入力したパスワードがエコーされ、
duke@0 834 そのまま画面に表示されます。このため、周囲にほかのユーザがいる場合は、
duke@0 835 パスワードを見られないように注意してください。
duke@0 836 .RE
duke@0 837 .TP
duke@0 838 .B -keypass password
duke@0 839 コマンド行で指定された別名に対応するキーストアエントリの非公開鍵を保護するの
duke@0 840 に使うパスワードを指定します。
duke@0 841 .B jarsigner
duke@0 842 を使って JAR ファイルに署名を付けるときは、パスワードが必要です。コマンド行で
duke@0 843 パスワードが指定されておらず、必要なパスワードがストアのパスワードと異なる
duke@0 844 場合は、パスワードの入力を求められます。
duke@0 845 .RS
duke@0 846 .LP
duke@0 847 注: テストを目的とする場合、または安全であることがわかっているシステムで
duke@0 848 実行する場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。
duke@0 849 また、password プロンプトでパスワードを入力すると、入力したパスワードがエコー
duke@0 850 され、そのまま画面に表示されます。このため、周囲にほかのユーザがいる場合は、
duke@0 851 パスワードを見られないように注意してください。
duke@0 852 .RE
duke@0 853 .TP
duke@0 854 .B -sigfile file
duke@0 855 SF ファイルと .DSA ファイルの生成に使うベースファイル名を指定します。
duke@0 856 たとえば、file に DUKESIGN を指定すると、生成される .SF ファイルと
duke@0 857 .DSA ファイルの名前は、それぞれ DUKESIGN.SF と DUKESIGN.DSA になります。
duke@0 858 これらのファイルは、署名付き JAR ファイルの META-INF ディレクトリに置かれます。
duke@0 859 .RS
duke@0 860 .LP
duke@0 861 .I file
duke@0 862 に使用できる文字は「a-zA-Z0-9_-」です。つまり、文字、数字、下線、
duke@0 863 およびハイフンだけを使用できます。注:
duke@0 864 .B .SF
duke@0 865 および
duke@0 866 .B .DSA
duke@0 867 のファイル名では、小文字はすべて大文字に変換されます。
duke@0 868 .LP
duke@0 869 コマンド行で
duke@0 870 .I -sigfile
duke@0 871 オプションを指定しなかった場合、
duke@0 872 .B .SF
duke@0 873 ファイルと
duke@0 874 .B .DSA
duke@0 875 ファイルのベースファイル名は、コマンド行で指定された別名の先頭の 8 文字を
duke@0 876 すべて大文字に変換したものになります。別名が 8 文字未満の場合は、別名が
duke@0 877 そのまま使われます。別名の中に、署名ファイル名に使用できない文字が含まれている
duke@0 878 場合は、該当する文字を下線 (_) に置き換えてファイル名が作成されます。
duke@0 879 .TP 3
duke@0 880 \-sigalg algorithm
duke@0 881 .RS 3
duke@0 882
duke@0 883 .LP
duke@0 884 JAR ファイルの署名に使用する署名アルゴリズムの名前を指定します。
duke@0 885 .LP
duke@0 886 標準署名アルゴリズム名の一覧については、「Java Cryptography Architecture」(
duke@0 887 http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#appa)
duke@0 888 にある
duke@0 889
duke@0 890 .I Appendix A
duke@0 891 」を参照してください。このアルゴリズムは、JAR ファイルの署名に使用する秘密鍵と互換性のあるものでなければなりません。このオプションを指定しなかった場合、秘密鍵のタイプに応じて SHA1withDSA、MD5withRSA のいずれかが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、あるいはユーザがそのようなプロバイダを
duke@0 892 .I \-providerClass
duke@0 893 オプションを使って指定する必要があります。そうでない場合、コマンドの実行が失敗します。
duke@0 894 .LP
duke@0 895 .RE
duke@0 896 .TP 3
duke@0 897 \-digestalg algorithm
duke@0 898 .RS 3
duke@0 899 JAR ファイルのエントリをダイジェストする際に使用するメッセージダイジェストアルゴリズムの名前を指定します。
duke@0 900 .LP
duke@0 901 標準メッセージダイジェストアルゴリズム名の一覧については、「Java Cryptography Architecture」(http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#appa)の
duke@0 902
duke@0 903 .I Appendix A
duke@0 904 」を参照してください。このオプションを指定しなかった場合、SHA\-1 が使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、あるいはユーザがそのようなプロバイダを
duke@0 905 .I \-providerClass
duke@0 906 オプションを使って指定する必要があります。そうでない場合、コマンドの実行が失敗します。
duke@0 907 .RE
duke@0 908 .TP
duke@0 909 .B -signedjar file
duke@0 910 署名付き JAR ファイルの名前を指定します。
duke@0 911 .RS
duke@0 912 .LP
duke@0 913 コマンド行で名前を指定しなかった場合は、入力 JAR ファイル (署名の対象となる
duke@0 914 JAR ファイル) の名前と同じ名前が使われます。この場合、入力 JAR ファイルは署名
duke@0 915 付き JAR ファイルによって上書きされます。
duke@0 916 .RE
duke@0 917 .TP
duke@0 918 .B -verify
duke@0 919 コマンド行でこのオプションが指定されている場合は、指定された JAR ファイルが
duke@0 920 検証されます。JAR ファイルへの署名は行われません。検証が成功すると、
duke@0 921 「jar verified」というメッセージが表示されます。署名されていない JAR ファイル、
duke@0 922 またはサポートされていないアルゴリズム (RSA プロバイダがインストールされていない
duke@0 923 場合の RSA など) を使って署名された JAR ファイルを検証しようとすると、
duke@0 924 「jar is unsigned. (signatures missing or not parsable)」というメッセージが表示されます。
duke@0 925 .RS
duke@0 926 .LP
duke@0 927 署名付き JAR ファイルは、
duke@0 928 .B jarsigner
duke@0 929 または JDK 1.1 の
duke@0 930 .B javakey
duke@0 931 ツール、あるいはその両方を使って検証できます。
duke@0 932 .LP
duke@0 933 検証についての詳細は、「JAR ファイルの検証」を参照してください。
duke@0 934 .RE
duke@0 935 .TP
duke@0 936 .B -certs
duke@0 937 コマンド行で、
duke@0 938 .I -verify
duke@0 939 および
duke@0 940 .I -verbose
duke@0 941 オプションとともにこのオプションが指定されている場合は、JAR ファイルの各署名者
duke@0 942 の証明書情報も出力されます。証明書情報には次のものが含まれます。
duke@0 943 .RS
duke@0 944 .TP 2
duke@0 945 \(bu
duke@0 946 署名者の公開鍵を証明する (
duke@0 947 .B .DSA
duke@0 948 ファイルに格納された) 証明書の種類の名前
duke@0 949 .TP 2
duke@0 950 \(bu
duke@0 951 証明書が X.509 証明書 (具体的には
duke@0 952 .I java.security.cert.X509Certificate
duke@0 953 のインスタンス) である場合は、署名者の識別名
duke@0 954 .LP
duke@0 955 キーストアの確認も行われます。コマンド行でキーストアの値が指定されていない
duke@0 956 場合、デフォルトのキーストアファイルがあれば、それが確認されます。署名者の
duke@0 957 公開鍵の証明書がキーストア内のエントリと一致した場合は、次の情報も表示
duke@0 958 されます。
duke@0 959 .TP 2
duke@0 960 \(bu
duke@0 961 署名者に該当するキーストアエントリの別名。この別名は括弧で囲まれます。
duke@0 962 ただし、キーストアではなく JDK 1.1 のアイデンティティデータベースに由来する
duke@0 963 署名者の場合は、括弧ではなく角括弧で囲まれます。
duke@0 964 .RE
duke@0 965 .TP
duke@0 966 .B -verbose
duke@0 967 コマンド行でこのオプションが指定されている場合、
duke@0 968 .B jarsigner
duke@0 969 は「冗長」モードで動作し、JAR の署名または検証の進行状況に関する追加情報を出
duke@0 970 力します。
duke@0 971 .TP
duke@0 972 .B -internalsf
duke@0 973 以前は、JAR ファイルの署名時に生成された
duke@0 974 .B .DSA
duke@0 975 (署名ブロック) ファイルの中に、生成された
duke@0 976 .B .SF
duke@0 977 ファイル (署名ファイル) の完全なコピーが符号化された形で含まれていました。この
duke@0 978 動作は変更になり、現在では、出力 JAR ファイル全体のサイズを小さくするために、
duke@0 979 デフォルトでは
duke@0 980 .B .SF
duke@0 981 ファイルが
duke@0 982 .B .DSA
duke@0 983 ファイルに含まれないようになっています。ただし、コマンド行で
duke@0 984 .B -internalsf
duke@0 985 オプションを指定すると、以前と同じように動作します。このオプションは、テストを行う
duke@0 986 場合には便利ですが、それ以外には使用しないでください。このオプションを使用する
duke@0 987 と、有益な最適化が行われなくなります。
duke@0 988 .TP
duke@0 989 .B -sectionsonly
duke@0 990 コマンド行でこのオプションが指定されている場合、JAR ファイルの署名時に生成される
duke@0 991 .B .SF
duke@0 992 ファイル (署名ファイル) には、マニフェストファイル全体のハッシュを含むヘッダは追加されません。この場合、.SF ファイルに含まれるのは、JAR ファイル内の各ソースファイルに関する情報およびハッシュだけです。詳細は、「署名 (\f3.SF\f1) ファイル」を参照してください。
duke@0 993 .RS
duke@0 994 .LP
duke@0 995 デフォルトでは、最適化を行うために、マニフェストファイル全体のハッシュを含むヘッダ
duke@0 996 が追加されます。ヘッダが存在する場合は、JAR ファイルの検証時に、まずヘッダ内
duke@0 997 のハッシュが、マニフェストファイル全体のハッシュと実際に一致するかどうかが確認
duke@0 998 されます。ハッシュが一致する場合、検証は次の手順に進みます。ハッシュが一致
duke@0 999 しない場合は、効率的には劣る方法を使って検証を行います。具体的には、
duke@0 1000 .B .SF
duke@0 1001 ファイル内の各ソースファイル情報セクションのハッシュが、マニフェストファイル内の
duke@0 1002 対応するセクションのハッシュと一致するかどうかを確認します。
duke@0 1003 .LP
duke@0 1004 詳細は、「JAR ファイルの検証」を参照してください。
duke@0 1005 .LP
duke@0 1006 このオプションは、テストを行う場合には便利ですが、それ以外には使用しないで
duke@0 1007 ください。このオプションを使用すると、有益な最適化が行われなくなります。
duke@0 1008 .TP
duke@0 1009 .B -protected
duke@0 1010 \f2true\fP、\f2false\fP のいずれか。専用 PIN リーダなどの保護された認証パスを介してパスワードを指定する必要がある場合には、この値に \f2true\fP を指定してください。
duke@0 1011 .RE
duke@0 1012 .TP
duke@0 1013 .B \-provider provider_class_name
duke@0 1014 サービスプロバイダがセキュリティプロパティファイル (\f2java.security\fP) のリストに
duke@0 1015 入っていないときに、暗号化サービスプロバイダのマスタークラスファイルの
duke@0 1016 名前を指定します。
duke@0 1017 .LP
duke@0 1018 \f2\-providerArg\fP \f2ConfigFilePath\fP オプションと組み合わせて使用します。keytool と jarsigner はプロバイダを動的にインストールします (ここで、\f2ConfigFilePath\fP はトークン設定ファイルへのパスです)。セキュリティプロパティファイル内で Sun PKCS#11 プロバイダが設定されていない場合に PKCS#11 キーストアを一覧表示するコマンドの例を次に示します。
duke@0 1019 .RS 3
duke@0 1020
duke@0 1021 .LP
duke@0 1022 .nf
duke@0 1023 \f3
duke@0 1024 .fl
duke@0 1025 jarsigner \-keystore NONE \-storetype PKCS11 \\
duke@0 1026 .fl
duke@0 1027 \-providerClass sun.security.pkcs11.SunPKCS11 \\
duke@0 1028 .fl
duke@0 1029 \-providerArg /foo/bar/token.config \\
duke@0 1030 .fl
duke@0 1031 \-list
duke@0 1032 .fl
duke@0 1033 \fP
duke@0 1034 .fi
duke@0 1035 .RE
duke@0 1036 .TP 3
duke@0 1037 .B \-providerName providerName
duke@0 1038 \f2java.security\fP セキュリティプロパティファイル内で 2 つ以上のプロバイダが設定されている場合、\f2\-providerName\fP オプションを使って特定のプロバイダインスタンスを選択できます。このオプションの引数は、プロバイダの名前になります。
duke@0 1039 .LP
duke@0 1040 Sun PKCS#11 プロバイダの場合、\f2providerName\fP は \f2SunPKCS11\-\fP\f2TokenName\fP の形式になります。ここで、\f2TokenName\fP は、プロバイダインスタンスの設定時に使用した名前のサフィックスです。詳細については、
duke@0 1041 .fi
duke@0 1042 http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#KeyToolJarSigner#ATTRS
duke@0 1043
duke@0 1044 .na
duke@0 1045 「\f2configuration attributes table\fP」を参照してください。たとえば、次のコマンドは、名前サフィックス \f2SmartCard\fP を持つ PKCS#11 キーストアプロバイダインスタンスの内容を一覧表示します。
duke@0 1046 .RS 3
duke@0 1047
duke@0 1048 .LP
duke@0 1049 .nf
duke@0 1050 \f3
duke@0 1051 .fl
duke@0 1052 jarsigner \-keystore NONE \-storetype PKCS11 \\
duke@0 1053 .fl
duke@0 1054 \-providerName SunPKCS11\-SmartCard \\
duke@0 1055 .fl
duke@0 1056 \-list
duke@0 1057 .fl
duke@0 1058 \fP
duke@0 1059 .fi
duke@0 1060 .RE
duke@0 1061 .TP
duke@0 1062 .B \-Jjavaoption
duke@0 1063 指定した
duke@0 1064 .I javaoption
duke@0 1065 文字列を直接実行時システムに渡します。
duke@0 1066 \f3jarsigner\f1 は、実際には Java インタプリタに対する「ラッパー」です。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリ使用を調整する場合に便利です。指定できるフラグを一覧表示するには、コマンド行で
duke@0 1067 .I java -h
duke@0 1068 または
duke@0 1069 .I java -X
duke@0 1070 と入力してください。
duke@0 1071 .LP
duke@0 1072 .TP 3
duke@0 1073 \-tsa url
duke@0 1074 JAR ファイル署名時にコマンド行に\f2「-tsa http://example.tsa.url」\fPと入力した場合、署名のタイムスタンプが生成されます。\f2http://example.tsa.url\fP という URL が、TSA (Time Stamping Authority) の場所を特定します。これは、\f2\-tsacert\fP オプション経由で見つかったどの URL よりも優先されます。\f2\-tsa\fP オプションを使用する場合、TSA の公開鍵証明書がキーストア内に存在している必要はありません。
duke@0 1075 .LP
duke@0 1076 タイムスタンプを生成するために、\f2jarsigner\fP は、
duke@0 1077 .fi
duke@0 1078 http://www.ietf.org/rfc/rfc3161.txt
duke@0 1079
duke@0 1080 .na
duke@0 1081 「\f2RFC 3161\fP」で規定された TSP (Time\-Stamp Protocol) を使って TSA と通信します。成功すると、TSA から返されたタイムスタンプトークンが、署名とともに署名ブロックファイル内に格納されます。
duke@0 1082 .LP
duke@0 1083 .TP 3
duke@0 1084 \-tsacert alias
duke@0 1085 JAR ファイル署名時にコマンド行に\f2「-tsacert alias」\fPと表示された場合、署名のタイムスタンプが生成されます。\f2alias\fP は、キーストア内で現在有効になっている TSA の公開鍵証明書を特定します。そのエントリの証明書内で、TSA の場所を特定する URL を含む Subject Information Access 拡張が検索されます。
duke@0 1086 .LP
duke@0 1087 \f2\-tsacert\fP を使用する場合、TSA の公開鍵証明書がキーストア内に存在している必要があります。
duke@0 1088 .LP
duke@0 1089 .TP 3
duke@0 1090 \-altsigner class
duke@0 1091 使用する代替署名機構を指定します。この完全修飾クラス名は、
duke@0 1092 .I com.sun.jarsigner.ContentSigner
duke@0 1093 抽象クラスを拡張するクラスファイルを特定します。このクラスファイルへのパスは、
duke@0 1094 .I \-altsignerpath
duke@0 1095 オプションを使って定義します。
duke@0 1096 .I \-altsigner
duke@0 1097 オプションが指定された場合、
duke@0 1098 .I jarsigner
duke@0 1099 はその指定されたクラスが提供する署名機構を使用します。それ以外の場合、
duke@0 1100 .I jarsigner
duke@0 1101 はデフォルトの署名機構を使用します。
duke@0 1102 .LP
duke@0 1103 たとえば、\f2com.sun.sun.jarsigner.AuthSigner\fP という名前のクラスが提供する署名機構を使用するには、\f2jarsigner\fP オプション\f2「-altsigner com.sun.jarsigner.AuthSigner」\fPを使用します。
duke@0 1104 .LP
duke@0 1105 .TP 3
duke@0 1106 \-altsignerpath classpathlist
duke@0 1107 クラスファイル (このクラスファイル名は前述の \f2\-altsigner\fP オプションを使って指定) へのパスと、そのクラスが依存するすべての JAR ファイルへのパスを指定します。そのクラスファイルが JAR ファイル内に存在している場合には、次の例で示すように、その JAR ファイルへのパスを指定します。
duke@0 1108 .LP
duke@0 1109 絶対パス、現在のディレクトリに対する相対パスのいずれかを指定できます。複数のパスまたは JAR ファイルを \f2classpathlist\fP に含める場合には、Solaris 上ではコロン (\f2:\fP)、Windows 上ではセミコロン (\f2;\fP) をそれぞれ使ってエントリを区切ってください。このクラスがすでに検索パスに含まれている場合、このオプションを指定する必要はありません。
duke@0 1110 .LP
duke@0 1111 クラスファイルを含む JAR ファイルへのパスを指定する例:
duke@0 1112 .RS 3
duke@0 1113
duke@0 1114 .LP
duke@0 1115 .LP
duke@0 1116 \f2\-altsignerpath /home/user/lib/authsigner.jar\fP
duke@0 1117 .LP
duke@0 1118 .RE
duke@0 1119 .LP
duke@0 1120 JAR ファイル名が含まれている点に注意してください。
duke@0 1121 .LP
duke@0 1122 クラスファイルを含む JAR ファイルへのパスを指定する例:
duke@0 1123 .RS 3
duke@0 1124 .LP
duke@0 1125 \f2\-altsignerpath /home/user/classes/com/sun/tools/jarsigner/\fP
duke@0 1126 .LP
duke@0 1127 .RE
duke@0 1128 .LP
duke@0 1129 JAR ファイル名が含まれていない点に注意してください。
duke@0 1130 .RE
duke@0 1131 .LP
duke@0 1132 .SH "例"
duke@0 1133 .LP
duke@0 1134 .SS
duke@0 1135 JAR ファイルの署名
duke@0 1136 .LP
duke@0 1137 .IX "jarsigner" "Signing a JAR File" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 1138 .LP
duke@0 1139 .B bundle.jar
duke@0 1140 という名前の JAR ファイルがあり、このファイルに、キーストアの別名が jane であるユーザの非公開鍵を使って、署名を付けるとします。キーストアは、mystore という名前で working ディレクトリにあり、キーストアのパスワードは mypass、
duke@0 1141 .I jane
duke@0 1142 の非公開鍵のパスワードは j638klm とします。この場合、次のコマンドを実行すると、JAR ファイルに署名を付けて sbundle.jar という署名付き JAR ファイルを作成できます。
duke@0 1143 .LP
duke@0 1144 .ft 3
duke@0 1145 .nf
duke@0 1146 jarsigner \-keystore "/working/mystore" \-storepass myspass
duke@0 1147 -keypass j638klm -signedjar sbundle.jar bundle.jar jane
duke@0 1148 .fi
duke@0 1149 .ft 1
duke@0 1150 .LP
duke@0 1151 上のコマンドでは
duke@0 1152 .I \-sigfile
duke@0 1153 オプションが指定されていないので、署名付き JAR ファイルに格納される
duke@0 1154 .B .SF
duke@0 1155 ファイルと
duke@0 1156 .B .DSA
duke@0 1157 ファイルの名前は、別名に基づくデフォルトの名前になり、それぞれ
duke@0 1158 .I JANE.SF
duke@0 1159
duke@0 1160 .I JANE.DSA
duke@0 1161 になります。
duke@0 1162 .LP
duke@0 1163 ストアのパスワードと非公開鍵のパスワードをあとで入力する場合は、
duke@0 1164 上のコマンドを短縮して次のように入力できます。
duke@0 1165 .LP
duke@0 1166 .ft 3
duke@0 1167 .nf
duke@0 1168 jarsigner \-keystore /working/mystore
duke@0 1169 -signedjar sbundle.jar bundle.jar jane
duke@0 1170 .fi
duke@0 1171 .ft 1
duke@0 1172 .LP
duke@0 1173 デフォルトのキーストア (ホームディレクトリ内の
duke@0 1174 .B .keystore
duke@0 1175 という名前のキーストア) を使用する場合は、次に示すように、キーストアの指定を
duke@0 1176 省略できます。
duke@0 1177 .LP
duke@0 1178 .ft 3
duke@0 1179 .nf
duke@0 1180 jarsigner \-signedjar sbundle.jar bundle.jar jane
duke@0 1181 .fi
duke@0 1182 .ft 1
duke@0 1183 .LP
duke@0 1184 また、署名付き JAR ファイルで入力 JAR ファイル (
duke@0 1185 .I bundle.jar
duke@0 1186 ) を上書きする場合は、
duke@0 1187 .I -signedjar
duke@0 1188 オプションの指定も省略できます。
duke@0 1189 .LP
duke@0 1190 .ft 3
duke@0 1191 .nf
duke@0 1192 jarsigner bundle.jar jane
duke@0 1193 .fi
duke@0 1194 .ft 1
duke@0 1195 .LP
duke@0 1196 .SS
duke@0 1197 署名付き JAR ファイルの検証
duke@0 1198 .LP
duke@0 1199 .IX "jarsigner" "Verifying a Signed JAR File" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 1200 .LP
duke@0 1201 次に示すのは、署名付き JAR ファイルを検証し、署名が有効で JAR ファイルが
duke@0 1202 改変されていないことを確認するためのコマンド例です。
duke@0 1203 .LP
duke@0 1204 .ft 3
duke@0 1205 .nf
duke@0 1206 jarsigner \-verify sbundle.jar
duke@0 1207 .fi
duke@0 1208 .ft 1
duke@0 1209 .LP
duke@0 1210 検証が成功すると、次のようなメッセージが表示されます。
duke@0 1211 .LP
duke@0 1212 .ft 3
duke@0 1213 .nf
duke@0 1214 jar verified.
duke@0 1215 .fi
duke@0 1216 .ft 1
duke@0 1217 .LP
duke@0 1218 検証が成功しなかった場合は、エラーメッセージが表示されます。
duke@0 1219 .LP
duke@0 1220 .I -verbose
duke@0 1221 オプションを使うと、より多くの情報が表示されます。次に示すのは、
duke@0 1222 .I -verbose
duke@0 1223 オプションを指定した
duke@0 1224 .B jarsigner
duke@0 1225 の実行例とその出力結果です。
duke@0 1226 .LP
duke@0 1227 .ft 3
duke@0 1228 .nf
duke@0 1229 jarsigner -verify -verbose sbundle.jar
duke@0 1230
duke@0 1231 198 Fri Sep 26 16:14:06 PDT 1997 META-INF/MANIFEST.MF
duke@0 1232 199 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.SF
duke@0 1233 1013 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.DSA
duke@0 1234 smk 2752 Fri Sep 26 16:12:30 PDT 1997 AclEx.class
duke@0 1235 smk 849 Fri Sep 26 16:12:46 PDT 1997 test.class
duke@0 1236
duke@0 1237 s = signature was verified
duke@0 1238 m = entry is listed in manifest
duke@0 1239 k = at least one certificate was found in keystore
duke@0 1240
duke@0 1241 jar verified.
duke@0 1242 .fi
duke@0 1243 .ft 1
duke@0 1244 .LP
duke@0 1245 .SS
duke@0 1246 証明書情報を使った検証
duke@0 1247 .LP
duke@0 1248 .IX "jarsigner" "Verification with Certificate Information" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 1249
duke@0 1250 検証時に、
duke@0 1251 .I -verify
duke@0 1252
duke@0 1253 .I -verbose
duke@0 1254 オプションに加えて
duke@0 1255 .I -certs
duke@0 1256 オプションを指定した場合は、JAR ファイル内の各署名者の証明書情報も出力されま
duke@0 1257 す。これには、証明書のタイプ、署名者の識別名情報 (X.509 証明書の場合)、および、
duke@0 1258 JAR ファイルの公開鍵の証明書がキーストアエントリの公開鍵の証明書と一致する場合
duke@0 1259 には、括弧で囲まれた署名者のキーストア別名が含まれます。たとえば、次のように
duke@0 1260 出力されます。
duke@0 1261 .LP
duke@0 1262 .ft 3
duke@0 1263 .nf
duke@0 1264 jarsigner -keystore /working/mystore -verify -verbose -certs myTest.jar
duke@0 1265
duke@0 1266 198 Fri Sep 26 16:14:06 PDT 1997 META-INF/MANIFEST.MF
duke@0 1267 199 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.SF
duke@0 1268 1013 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.DSA
duke@0 1269 208 Fri Sep 26 16:23:30 PDT 1997 META-INF/JAVATEST.SF
duke@0 1270 1087 Fri Sep 26 16:23:30 PDT 1997 META-INF/JAVATEST.DSA
duke@0 1271 smk 2752 Fri Sep 26 16:12:30 PDT 1997 Tst.class
duke@0 1272
duke@0 1273 X.509, CN=Test Group, OU=Java Software, O=Sun Microsystems, L=CUP, S=CA, C=US (javatest)
duke@0 1274 X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane)
duke@0 1275
duke@0 1276 s = signature was verified
duke@0 1277 m = entry is listed in manifest
duke@0 1278 k = at least one certificate was found in keystore
duke@0 1279
duke@0 1280 jar verified.
duke@0 1281 .fi
duke@0 1282 .ft 1
duke@0 1283 .LP
duke@0 1284 署名者の証明書が X.509 証明書でない場合は、識別名情報は表示されず、証明書の
duke@0 1285 タイプと別名だけが表示されます。たとえば、証明書が PGP 証明書で、別名が bob の
duke@0 1286 場合は、次のように表示されます。
duke@0 1287 .LP
duke@0 1288 .ft 3
duke@0 1289 .nf
duke@0 1290 PGP, (bob)
duke@0 1291 .fi
duke@0 1292 .ft 1
duke@0 1293 .LP
duke@0 1294 .SS
duke@0 1295 アイデンティティデータベース署名者を含む JAR ファイルの検証
duke@0 1296 .LP
duke@0 1297 .IX "jarsigner" "Verification of a JAR File" "\fLjarsigner\fP \(em JAR signing and verification tool "
duke@0 1298 JAR ファイルが、JDK 1.1 の
duke@0 1299 .B javakey
duke@0 1300 ツールを使って署名されている場合、署名者はアイデンティティデータベース内の
duke@0 1301 別名です。この場合、検証の出力には i という記号が含まれます。JAR ファイルが、
duke@0 1302 アイデンティティデータベース内の別名とキーストア内の別名の両方によって署名
duke@0 1303 されている場合は、k と i の両方が表示されます。
duke@0 1304 .LP
duke@0 1305 .I -certs
duke@0 1306 オプションを指定した場合、キーストアの別名は括弧で囲まれるのに対し、アイデンティ
duke@0 1307 ティデータベース内の別名は角括弧で囲まれて表示されます。たとえば、次のように
duke@0 1308 表示されます。
duke@0 1309 .LP
duke@0 1310 .ft 3
duke@0 1311 .nf
duke@0 1312 jarsigner \-keystore /working/mystore \-verify \-verbose \-certs writeFile.jar
duke@0 1313
duke@0 1314 198 Fri Sep 26 16:14:06 PDT 1997 META-INF/MANIFEST.MF
duke@0 1315 199 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.SF
duke@0 1316 1013 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.DSA
duke@0 1317 199 Fri Sep 27 12:22:30 PDT 1997 META-INF/DUKE.SF
duke@0 1318 1013 Fri Sep 27 12:22:30 PDT 1997 META-INF/DUKE.DSA
duke@0 1319 smki 2752 Fri Sep 26 16:12:30 PDT 1997 writeFile.html
duke@0 1320
duke@0 1321 X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane)
duke@0 1322 X.509, CN=Duke, OU=Java Software, O=Sun, L=cup, S=ca, C=us [duke]
duke@0 1323
duke@0 1324 s = signature was verified
duke@0 1325 m = entry is listed in manifest
duke@0 1326 k = at least one certificate was found in keystore
duke@0 1327 i = at least one certificate was found in identity scope
duke@0 1328
duke@0 1329 jar verified.
duke@0 1330 .fi
duke@0 1331 .ft 1
duke@0 1332 .LP
duke@0 1333 別名 duke は角括弧で囲まれているので、この別名はキーストアの別名ではなく、
duke@0 1334 アイデンティティデータベースの別名です。
duke@0 1335 .SH "関連項目"
duke@0 1336 .LP
duke@0 1337
duke@0 1338 .LP
duke@0 1339 .RS 3
duke@0 1340 .TP 2
duke@0 1341 o
duke@0 1342 jar ツールのドキュメント
duke@0 1343 .TP 2
duke@0 1344 o
duke@0 1345 keytool ツールのドキュメント
duke@0 1346 .TP 2
duke@0 1347 o
duke@0 1348 \f3jarsigner\fP ツールの使用例については、「Java Tutorial」
duke@0 1349 (http://java.sun.com/docs/books/tutorial/trailmap.html)
duke@0 1350 の「Security」( http://java.sun.com/docs/books/tutorial/security1.2/index.html)
duke@0 1351 を参照
duke@0 1352 .na
duke@0 1353 .RE
duke@0 1354
duke@0 1355 .LP
duke@0 1356
duke@0 1357 .LP
duke@0 1358