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