1 ." Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
   2 ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   3 ."
   4 ." This code is free software; you can redistribute it and/or modify it
   5 ." under the terms of the GNU General Public License version 2 only, as
   6 ." published by the Free Software Foundation.
   7 ."
   8 ." This code is distributed in the hope that it will be useful, but WITHOUT
   9 ." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  10 ." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  11 ." version 2 for more details (a copy is included in the LICENSE file that
  12 ." accompanied this code).
  13 ."
  14 ." You should have received a copy of the GNU General Public License version
  15 ." 2 along with this work; if not, write to the Free Software Foundation,
  16 ." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  17 ."
  18 ." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  19 ." or visit www.oracle.com if you need additional information or have any
  20 ." questions.
  21 ."
  22 .TH jarsigner 1 "07 May 2011"
  23 
  24 .LP
  25 .SH "名前"
  26 jarsigner \- JAR 署名および検証ツール
  27 .LP
  28 .LP
  29 Java ARchive (JAR) ファイルの署名を生成し、署名付き JAR ファイルの署名を検証します。
  30 .LP
  31 .SH "形式"
  32 .LP
  33 .nf
  34 \f3
  35 .fl
  36 \fP\f3jarsigner\fP [ options ] jar\-file alias
  37 .fl
  38 \f3jarsigner\fP \-verify [ options ] jar\-file [alias...]
  39 .fl
  40 .fi
  41 
  42 .LP
  43 .LP
  44 jarsigner の \-verify コマンドでは、JAR ファイル名のあとに 0 個以上のキーストア別名を指定できます。キーストア別名が指定された場合、jarsigner は、JAR ファイル内の各署名付きエンティティーの検証に使用される証明書がキーストア別名のいずれかに一致することをチェックします。別名は、\-keystore で指定されたキーストア内またはデフォルトのキーストア内に定義されます。
  45 .LP
  46 .SH "説明"
  47 .LP
  48 .LP
  49 \f3jarsigner\fP ツールは、次の 2 つの目的で使用します。
  50 .LP
  51 .RS 3
  52 .TP 3
  53 1.
  54 Java ARchive (JAR) ファイルに署名を付ける 
  55 .TP 3
  56 2.
  57 署名付き JAR ファイルの署名と整合性を検証する 
  58 .RE
  59 
  60 .LP
  61 .LP
  62 JAR 機能を使うと、クラスファイル、イメージ、サウンド、およびその他のデジタルデータを単一のファイルにパッケージ化できるので、ファイルを迅速かつ容易に配布できます。開発者は、jar(1) という名前のツールを使って JAR ファイルを作成できます。技術的な観点から言えば、すべての ZIP ファイルも JAR ファイルとみなすことができます。 ただし、\f3jar\fP によって作成された JAR ファイル、または \f3jarsigner\fP によって処理された JAR ファイルには、META\-INF/MANIFEST.MF ファイルが含まれています。
  63 .LP
  64 .LP
  65 「デジタル署名」は、なんらかのデータ (「署名」の対象となるデータ) と、エンティティー (人、会社など) の非公開鍵とに基づいて計算されるビット列です。手書きの署名同様、デジタル署名には多くの利点があります。
  66 .LP
  67 .RS 3
  68 .TP 2
  69 o
  70 署名の生成に使われた非公開鍵と対になる公開鍵を使って計算を行うことで、デジタル署名が本物かどうかを検証できる 
  71 .TP 2
  72 o
  73 非公開鍵が他人に知られない限り、デジタル署名の偽造は不可能である 
  74 .TP 2
  75 o
  76 デジタル署名は、その署名が付いたデータだけを対象とするものであり、ほかのデータの署名として機能することはない 
  77 .TP 2
  78 o
  79 署名付きのデータは変更できない。 データが変更された場合は、その署名によってデータが本物ではないことが検証される 
  80 .RE
  81 
  82 .LP
  83 .LP
  84 ファイルに対してエンティティーの署名を生成するには、まず、エンティティーは、そのエンティティーに関連する公開鍵と非公開鍵のペアを持つ必要があります。また、公開鍵を認証する 1 つまたは複数の証明書も必要です。「証明書」とは、あるエンティティーが発行したデジタル署名付きの文書で、別なエンティティーの公開鍵が特定の値であることを証明しています。
  85 .LP
  86 .LP
  87 \f3jarsigner\fP は、「キーストア」に含まれる鍵と証明書情報を使って、JAR ファイルのデジタル署名を生成します。キーストアは、非公開鍵と、非公開鍵に関連付けられた X.509 証明書チェーンが収められたデータベースです。キーストアの作成と管理には、keytool(1) ユーティリティーを使います。
  88 .LP
  89 .LP
  90 \f3jarsigner\fP は、エンティティーの非公開鍵を使って署名を生成します。署名付き JAR ファイルには特に、ファイルの署名に使用された非公開鍵に対応する公開鍵に対する、キーストア内の証明書のコピーが含まれています。\f3jarsigner\fP は、署名付き JAR ファイル内 (署名ブロックファイル内) にある証明書を使用してそのファイルのデジタル署名を検証できます。
  91 .LP
  92 .LP
  93 \f3jarsigner\fP はタイムスタンプを含む署名を生成するので、システムやデプロイヤ (Java Plug\-in を含む) はJAR ファイルが署名証明書の有効期間中に署名されたかどうかをチェックできます。さらに、API を使用すると、アプリケーションからタイムスタンプ情報を取得できます。
  94 .LP
  95 .LP
  96 現時点では、\f3jarsigner\fP で署名できるのは、JDK の jar(1) ツールで作成された JAR ファイル、または ZIP ファイルだけです。JAR ファイルは ZIP ファイルと同じですが、JAR ファイルには META\-INF/MANIFEST.MF ファイルが含まれている点が異なります。META\-INF/MANIFEST.MF ファイルは、\f3jarsigner\fP が ZIP ファイルに署名を付けるときに自動的に作成されます。
  97 .LP
  98 .LP
  99 デフォルトでは、\f3jarsigner\fP は JAR (または ZIP) ファイルに「署名」を付けます。署名付き JAR ファイルを「検証」する場合は、 \f2\-verify\fP オプションを指定します。
 100 .LP
 101 .SS 
 102 キーストアの別名
 103 .LP
 104 .LP
 105 キーストアのすべてのエントリは、一意の「別名」を介してアクセスされます。
 106 .LP
 107 .LP
 108 \f3jarsigner\fP を使って JAR ファイルに署名を付けるときは、署名の生成に必要な非公開鍵を含むキーストアエントリの別名を指定する必要があります。たとえば、次の例は、working ディレクトリの mystore という名前のキーストアに含まれる別名 duke に関連付けられた非公開鍵を使って、MyJARFile.jar という名前の JAR ファイルに署名を付けます。出力ファイルは指定されていないので、MyJARFile.jar は署名付きの JAR ファイルによって上書きされます。
 109 .LP
 110 .nf
 111 \f3
 112 .fl
 113     jarsigner \-keystore /working/mystore \-storepass \fP\f4<キーストアのパスワード>\fP\f3
 114 .fl
 115       \-keypass \fP\f4<非公開鍵のパスワード>\fP\f3 MyJARFile.jar duke
 116 .fl
 117 \fP
 118 .fi
 119 
 120 .LP
 121 .LP
 122 キーストアはパスワードで保護されているので、ストアのパスワードを指定する必要があります。コマンド行でストアのパスワードを指定しないと、パスワードの入力を求められます。同様に、非公開鍵もキーストア内でパスワードによって保護されているため、非公開鍵のパスワードを指定する必要があります。コマンド行で非公開鍵のパスワードを指定していない、また、指定したパスワートが保存されているパスワードと違っている場合には、非公開鍵のパスワードの入力を求められます。
 123 .LP
 124 .SS 
 125 キーストアの場所
 126 .LP
 127 .LP
 128 \f3jarsigner\fP には、 \f2使用するキーストアの URL を指定する \-keystore\fP があります。キーストア \f2は\fP デフォルトで、 \f2user.home\fP システムプロパティーで決まるユーザーのホームディレクトリの .keystore という名前のファイル内に格納されます。Solaris システムの場合、 \f2user.home\fP のデフォルトはユーザーの home ディレクトリになります。
 129 .LP
 130 .LP
 131 \-keystore オプション \f2に指定した\fP 入力ストリームが \f2KeyStore.load\fP メソッドに渡される点に注意してください。URL として \f2NONE\fP が指定されている場合は、null のストリームが \f2KeyStore.load\fP メソッドに渡されます。 \f2NONE\fP は、 \f2KeyStore\fP がファイルベースではない場合、たとえばそれがハードウェアトークンデバイス上に存在している場合などに指定すべきです。
 132 .LP
 133 .SS 
 134 キーストアの実装
 135 .LP
 136 .LP
 137 java.security パッケージ \f2で提供されている\fP KeyStore クラス \f2は、\fP キーストア内の情報へのアクセスおよび情報の変更を行うための、明確に定義されたインタフェースを提供します。キーストアの固定実装としては、それぞれが特定の「タイプ」のキーストアを対象とする複数の異なる実装が存在可能です。
 138 .LP
 139 .LP
 140 現在、キーストアの実装を使用するものとして、\f3keytool\fP と \f3jarsigner\fP の 2 つのコマンド行ツールと、\f3Policy Tool\fP という名前の 1 つの GUI ベースのツールがあります。KeyStore \f2は\fP public として使用可能なので、Java 2 SDK ユーザーは KeyStore を使ったほかのセキュリティーアプリケーションも作成できます。
 141 .LP
 142 .LP
 143 キーストアには、Sun が提供する組み込みのデフォルトの実装があります。これは、JKS という名前の独自のキーストアタイプ (形式) を利用するもので、キーストアをファイルとして実装しています。この実装では、個々の非公開鍵は個別のパスワードによって保護され、キーストア全体の整合性も (非公開鍵とは別の) パスワードによって保護されます。
 144 .LP
 145 .LP
 146 キーストアの実装は、プロバイダベースです。具体的には、 \f2KeyStore\fP によって提供されるアプリケーションインタフェースが「サービスプロバイダインタフェース」 (SPI) に基づいて実装されます。つまり、対応する抽象クラス \f2KeystoreSpi\fP が同じ \f2java.security\fP パッケージ内に存在しており、このクラスによって、「プロバイダ」が実装する必要のあるサービスプロバイダインタフェースメソッドが定義されています。ここで、「プロバイダ」とは、Java Security API によってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。したがって、キーストアの実装を提供するには、
 147 .na
 148 \f2「Java 暗号化アーキテクチャー用プロバイダの実装方法」\fP @
 149 .fi
 150 http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.htmlで説明しているように、クライアントが「プロバイダ」を実装し、KeystoreSpi サブクラスの実装を提供する必要があります。
 151 .LP
 152 .LP
 153 アプリケーションでは、KeyStore クラスが提供する getInstance ファクトリメソッドを使うことで、さまざまなプロバイダから異なる「タイプ」のキーストアの \f2実装を\fP 選択できます。キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の非公開鍵とキーストア自体の整合性を保護するために使われるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。
 154 .LP
 155 .LP
 156 \f3keytool\fP は、任意のファイルベースのキーストア実装で動作します。keytool は、コマンド行から渡されたキーストアの場所をファイル名として扱い、これを FileInputStream に変換して、FileInputStream からキーストアの情報をロードします。一方、\f3jarsigner\fP ツールと \f3policytool\fP ツールは、URL で指定可能な任意の場所からキーストアを読み込むことができます。
 157 .LP
 158 .LP
 159 \f3jarsigner\fP と \f3keytool\fP の場合、\f2\-storetype\fP オプションを使ってコマンド行でキーストアのタイプを指定できます。\f3Policy Tool\fP の場合は、[Edit] メニューの [Change Keystore] コマンドを使ってキーストアのタイプを指定できます。
 160 .LP
 161 .LP
 162 ユーザーがキーストアのタイプを明示的に指定しなかった場合、ツールは、単純にセキュリティープロパティーファイルで指定された \f2keystore.type\fP プロパティーの値に基づいて、キーストアの実装を選択します。このセキュリティープロパティーファイルは \f2java.security\fP と呼ばれ、SDK セキュリティープロパティーディレクトリ \f2java.home\fP/lib/security 内に存在しています。ここで、\f2java.home\fP は実行時環境のディレクトリ (SDK の \f2jre\fP ディレクトリまたは Java 2 Runtime Environment のトップレベルディレクトリ) です。
 163 .LP
 164 .LP
 165 各ツールは、 \f2keystore.type\fP の値を取得し、この値で指定されたタイプのキーストアを実装しているプロバイダが見つかるまで、現在インストールされているすべてのプロバイダを調べます。目的のプロバイダが見つかると、そのプロバイダからのキーストアの実装を使います。
 166 .LP
 167 .LP
 168 \f2KeyStore\fP クラスに定義されている static メソッド \f2getDefaultType\fP を使用すると、アプリケーションやアプレットから \f2keystore.type\fP プロパティーの値を取得できます。次のコードは、デフォルトのキーストアタイプ \f2(keystore.type プロパティーで指定されたタイプ)\fP のインスタンスを生成します。
 169 .LP
 170 .nf
 171 \f3
 172 .fl
 173     KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
 174 .fl
 175 \fP
 176 .fi
 177 
 178 .LP
 179 .LP
 180 デフォルトのキーストアタイプは JKS (Sun が提供する独自のタイプのキーストアの実装) です。これは、セキュリティープロパティーファイル内の次の行によって指定されています。
 181 .LP
 182 .nf
 183 \f3
 184 .fl
 185     keystore.type=jks
 186 .fl
 187 \fP
 188 .fi
 189 
 190 .LP
 191 .LP
 192 注: キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、JKS と jks は同じものとして扱われます。
 193 .LP
 194 .LP
 195 各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。たとえば、pkcs12 と呼ばれるタイプのキーストアの実装を提供しているプロバイダパッケージを使用するには、上の行を次のように変更します。
 196 .LP
 197 .nf
 198 \f3
 199 .fl
 200     keystore.type=pkcs12
 201 .fl
 202 \fP
 203 .fi
 204 
 205 .LP
 206 .LP
 207 PKCS#11 プロバイダパッケージを使用する場合、その詳細については、「Java PKCS#11 Reference Guide」にある
 208 .na
 209 \f2「KeyTool and JarSigner」\fP @
 210 .fi
 211 http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#KeyToolJarSigner節を参照してください。
 212 .LP
 213 .SS 
 214 サポートされるアルゴリズム
 215 .LP
 216 .LP
 217 \f3jarsigner\fP はデフォルトで、次のいずれかを使用して JAR ファイルに署名します。
 218 .LP
 219 .RS 3
 220 .TP 2
 221 o
 222 SHA1 ダイジェストアルゴリズムを使った DSA (デジタル署名アルゴリズム) 
 223 .TP 2
 224 o
 225 SHA256 ダイジェストアルゴリズムを使用した RSA アルゴリズム 
 226 .TP 2
 227 o
 228 SHA256 と ECDSA (楕円曲線デジタル署名アルゴリズム) を使用した EC (楕円曲線) 暗号方式アルゴリズム 
 229 .RE
 230 
 231 .LP
 232 .LP
 233 具体的には、署名者の公開鍵と非公開鍵が DSA 鍵である場合、\f3jarsigner\fP は SHA1withDSA アルゴリズムを使って JAR ファイルに署名を付けます。署名者の鍵が RSA 鍵である場合、\f3jarsigner\fP は SHA256withRSA アルゴリズムを使って JAR ファイルに署名を付けます。署名者の鍵が EC 鍵である場合、\f3jarsigner\fP は SHA256withECDSA アルゴリズムを使って JAR ファイルに署名を付けます。
 234 .LP
 235 .LP
 236 これらのデフォルトの署名アルゴリズムは、\f2\-sigalg\fP オプションを使ってオーバーライドできます。
 237 .LP
 238 .SS 
 239 署名付き JAR ファイル
 240 .LP
 241 .LP
 242 \f3jarsigner\fP を使って JAR ファイルに署名を付けた場合、出力される署名付き JAR ファイルは入力 JAR ファイルと同じですが、次の 2 つの追加ファイルが META\-INF ディレクトリに置かれる点が異なります。
 243 .LP
 244 .RS 3
 245 .TP 2
 246 o
 247 .SF 拡張子の付いた署名ファイル 
 248 .TP 2
 249 o
 250 .DSA、.RSA、または .EC を拡張子に持つ署名ブロックファイル 
 251 .RE
 252 
 253 .LP
 254 .LP
 255 これら 2 つのファイルのベースファイル名は、 \f2\-sigFile\fP オプションの値から作成されます。たとえば、次のようにオプションを指定したとします。
 256 .LP
 257 .nf
 258 \f3
 259 .fl
 260 \-sigFile MKSIGN
 261 .fl
 262 \fP
 263 .fi
 264 
 265 .LP
 266 .LP
 267 この場合、ファイル名はそれぞれ MKSIGN.SF と MKSIGN.DSA になります。
 268 .LP
 269 .LP
 270 コマンド行で \f2\-sigfile\fP オプションを指定しなかった場合、.SF ファイルと .DSA ファイルのベースファイル名は、コマンド行で指定された別名の先頭の 8 文字をすべて大文字に変換したものになります。別名が 8 文字未満の場合は、別名がそのまま使われます。別名の中に、署名ファイル名に使用できない文字が含まれている場合は、該当する文字を下線 (_) に置き換えてファイル名が作成されます。使用できる文字は、アルファベット、数字、下線 (_)、ハイフンです。
 271 .LP
 272 \f3署名 (.SF) ファイル\fP
 273 .LP
 274 .LP
 275 署名ファイル (.SF ファイル) は、\f3jarsigner\fP で署名を付けた JAR ファイルに常に含まれるマニフェストファイルと似ています。つまり、マニフェストファイル同様、.SF ファイルには、JAR ファイルに含まれているソースファイルごとに、次の 3 つの行があります。
 276 .LP
 277 .RS 3
 278 .TP 2
 279 o
 280 ファイル名 
 281 .TP 2
 282 o
 283 使われているダイジェストアルゴリズム (SHA) の名前 
 284 .TP 2
 285 o
 286 SHA ダイジェストの値 
 287 .RE
 288 
 289 .LP
 290 .LP
 291 マニフェストファイルでは、SHA ダイジェストの値は、ソースファイルのバイナリデータのダイジェスト (ハッシュ) です。一方、.SF ファイルでは、ソースファイルのダイジェストの値は、マニフェストファイル中の該当するソースファイルに対応する 3 行のハッシュです。
 292 .LP
 293 .LP
 294 署名ファイルには、デフォルトでマニフェストファイル全体のハッシュも含まれています。後述の「JAR ファイルの検証」で説明するように、このヘッダーの存在によって検証の最適化が可能になっています。
 295 .LP
 296 \f3署名ブロックファイル\fP
 297 .LP
 298 .SF ファイルには署名が付けられ、署名は署名ブロックファイルに置かれます。このファイルには、キーストアからの証明書または証明書チェーンも符号化された形で含まれています。 証明書または証明書チェーンは、署名に使われた非公開鍵に対応する公開鍵を認証します。ファイルの拡張子は、使用されるダイジェストアルゴリズムに応じて .DSA、.RSA、.EC のいずれかになります。 
 299 .SS 
 300 署名タイムスタンプ
 301 .LP
 302 .LP
 303 \f2jarsigner\fP ツールは、JAR ファイルの署名時に署名タイムスタンプを生成して保存できます。さらに、 \f2jarsigner\fP は代替署名機構をサポートします。この動作は省略可能で、署名時に次の各オプションによって制御されます。
 304 .LP
 305 .RS 3
 306 .TP 2
 307 o
 308 \f2\-tsa url\fP 
 309 .TP 2
 310 o
 311 \f2\-tsacert alias\fP 
 312 .TP 2
 313 o
 314 \f2\-altsigner class\fP 
 315 .TP 2
 316 o
 317 \f2\-altsignerpath classpathlist\fP 
 318 .RE
 319 
 320 .LP
 321 .LP
 322 これらの各オプションの詳細については、後述の「オプション」節を参照してください。
 323 .LP
 324 .SS 
 325 JAR ファイルの検証
 326 .LP
 327 .LP
 328 JAR ファイルの検証が成功するのは、署名が有効であり、かつ署名の生成以後に JAR ファイル内のどのファイルも変更されていない場合です。JAR ファイルの検証は、次の手順で行われます。
 329 .LP
 330 .RS 3
 331 .TP 3
 332 1.
 333 .SF ファイルそれ自体の署名を検証します。 
 334 .LP
 335 この手順では、各署名ブロック (.DSA) ファイルに格納されている署名が、実際に、公開鍵に対応する非公開鍵を使って生成されたものであることを確認します。 .DSA ファイルには、公開鍵の証明書 (または証明書チェーン) も含まれています。また、この手順では、目的の署名が、対応する署名 (.SF) ファイル内の有効な署名であるかどうかを調べ、.SF ファイルが改変されていないことも確認します。  
 336 .TP 3
 337 2.
 338 .SF ファイル内の各エントリのダイジェストをマニフェスト内の対応する各セクションと突き合わせて検証します。 
 339 .LP
 340 .SF ファイルには、マニフェストファイル全体のハッシュが格納されたヘッダーがデフォルトで含まれています。このヘッダーが存在する場合は、ヘッダー内のハッシュが実際にマニフェストファイルのハッシュと一致するかどうかを検証することができます。ハッシュが一致する場合は、次の手順に進みます。 
 341 .LP
 342 ハッシュが一致しない場合は、効率的には劣る方法を使って検証を行います。具体的には、.SF ファイル内の各ソースファイル情報セクションのハッシュが、マニフェストファイル内の対応するセクションのハッシュと一致するかどうかを確認します (「署名 (.SF) ファイル」を参照)。 
 343 .LP
 344 .SF ファイルのヘッダーに格納されたマニフェストファイルのハッシュと、実際のマニフェストファイルのハッシュとが一致しない場合は、署名 (および .SF ファイル) の生成後に、JAR ファイルに 1 つ以上のファイルが追加 \f2(jar ツールを使用)\fP された可能性があります。jar \f2ツール\fP を使ってファイルを追加した場合、マニフェストファイルは変更されますが (新しいファイル用のセクションが追加される)、.SF ファイルは変更されません。この場合、.SF ファイルのヘッダー以外のセクションに格納されたハッシュが、マニフェストファイル内の対応するセクションのハッシュと一致するときは、署名の生成時に JAR ファイル内に存在していたファイルのうち、どのファイルも変更されていないことになり、検証は成功したものとして扱われます。  
 345 .TP 3
 346 3.
 347 JAR ファイル内のファイルのうち、.SF ファイル内にエントリを持つ各ファイルを読み込みます。読み込み中にファイルのダイジェストを計算し、結果をマニフェストセクション内の該当するファイルのダイジェストと比較します。2 つのダイジェストは同じでなければならず、そうでない場合は検証が失敗します。 
 348 .RE
 349 
 350 .LP
 351 .LP
 352 検証プロセスの途中でなんらかの重大な検証エラーが発生した場合、検証プロセスは中止され、セキュリティー例外がスローされます。スローされたセキュリティー例外は、\f3jarsigner\fP がキャッチして表示します。
 353 .LP
 354 .SS 
 355 1 つの JAR ファイルを対象とする複数の署名
 356 .LP
 357 .LP
 358 1 つの JAR ファイルに対して \f3jarsigner\fP ツールを複数回実行し、実行のたびに、異なるユーザーの別名を指定すれば、JAR ファイルに複数のユーザーの署名を付けることができます。
 359 .LP
 360 .nf
 361 \f3
 362 .fl
 363   jarsigner myBundle.jar susan
 364 .fl
 365   jarsigner myBundle.jar kevin
 366 .fl
 367 \fP
 368 .fi
 369 
 370 .LP
 371 .LP
 372 JAR ファイルが複数回署名されている場合、その JAR ファイルには .SF ファイルと .DSA ファイルの対が複数含まれることになります。 .SF ファイルと .DSA ファイルの対は、1 回の署名に対して 1 つ作成されます。したがって、上の例で出力される JAR ファイルには、次の名前を持つファイルが含まれます。
 373 .LP
 374 .nf
 375 \f3
 376 .fl
 377   SUSAN.SF
 378 .fl
 379   SUSAN.DSA
 380 .fl
 381   KEVIN.SF
 382 .fl
 383   KEVIN.DSA
 384 .fl
 385 \fP
 386 .fi
 387 
 388 .LP
 389 .LP
 390 注: JAR ファイルでは、JDK 1.1 の \f3javakey\fP ツールで生成された署名と \f3jarsigner\fP で生成された署名が混在できます。つまり、すでに \f3javakey\fP を使って署名が付けられている JAR ファイルに、\f3jarsigner\fP を使って署名を付けることができます。
 391 .LP
 392 .SH "オプション"
 393 .LP
 394 .LP
 395 以下では、\f3jarsigner\fP のオプションについて説明します。注:
 396 .LP
 397 .RS 3
 398 .TP 2
 399 o
 400 どのオプション名にも先頭にマイナス記号 (\-) が付く 
 401 .TP 2
 402 o
 403 オプションは任意の順序で指定できる 
 404 .TP 2
 405 o
 406 イタリック体の項目の実際の値 (オプションの値) は、ユーザーが指定する必要がある 
 407 .TP 2
 408 o
 409 \f2\-keystore\fP、 \f2\-storepass\fP、 \f2\-keypass\fP、 \f2\-sigfile\fP、 \f2\-sigalg\fP、 \f2\-digestalg\fP、および \f2\-signedjar\fP オプションを使用できるのは、署名付き JAR ファイルを検証する場合ではなく、JAR ファイルに署名する場合だけです。同様に、別名をコマンド行で指定するのは、JAR ファイルに署名を付ける場合だけである 
 410 .RE
 411 
 412 .LP
 413 .RS 3
 414 .TP 3
 415 \-keystore url 
 416 キーストアの場所を示す URL を指定します。デフォルトは、ユーザーのホームディレクトリ内のファイル \f2.keystore\fP です。 ユーザーのホームディレクトリは、user.home システムプロパティーによって決まります。 
 417 .LP
 418 署名するときはキーストアが必要です。 このため、デフォルトのキーストアが存在しない場合、あるいはデフォルト以外のほかのキーストアを使用する場合は、キーストアを明示的に指定する必要があります。 
 419 .LP
 420 検証するときはキーストアは必要ありません。ただし、キーストアが指定されているか、あるいはデフォルトのキーストアが存在していて、さらに \f2\-verbose\fP オプションも指定されていた場合、JAR ファイルの検証に使用される証明書がそのキーストアに 1 つでも含まれているかどうかに関する追加情報が出力されます。 
 421 .LP
 422 注: \f2\-keystore\fP の引数には、URL の代わりにファイル名 (とパス) を指定できます。 ファイル名 (とパス) を指定した場合は、「file:」URL として扱われます。たとえば、次のように指定できます。 
 423 .nf
 424 \f3
 425 .fl
 426   \-keystore \fP\f4filePathAndName\fP\f3
 427 .fl
 428 \fP
 429 .fi
 430 .LP
 431 これは、次の指定と同じものとして扱われます。 
 432 .nf
 433 \f3
 434 .fl
 435   \-keystore file:\fP\f4filePathAndName\fP\f3
 436 .fl
 437 \fP
 438 .fi
 439 .LP
 440 JRE の \f2$JAVA_HOME/lib/security\fP ディレクトリに格納された \f2java.security\fP セキュリティープロパティーファイル内で Sun PKCS#11 プロバイダが設定されている場合、keytool と jarsigner は PKCS#11 トークンに基づいて動作できます。次のオプションを指定します。 
 441 .RS 3
 442 .TP 2
 443 o
 444 \f2\-keystore NONE\fP 
 445 .TP 2
 446 o
 447 \f2\-storetype PKCS11\fP 
 448 .RE
 449 .LP
 450 たとえば、次のコマンドは、設定された PKCS#11 トークンの内容を一覧表示します。 
 451 .nf
 452 \f3
 453 .fl
 454    jarsigner \-keystore NONE \-storetype PKCS11 \-list
 455 .fl
 456 
 457 .fl
 458 \fP
 459 .fi
 460 .TP 3
 461 \-storetype storetype 
 462 インスタンスを生成するキーストアのタイプを指定します。デフォルトのキーストアタイプは、セキュリティープロパティーファイル内の keystore.type プロパティーの値で指定されたタイプです。この値は、 \f2java.security.KeyStore\fP の static getDefaultType メソッド \f2で取得できます。\fP. 
 463 .LP
 464 \-storepass オプションを使って PCKS#11 トークンの PIN を \f2指定することも\fP できます。何も指定しなかった場合、keytool と jarsigner はユーザーにトークン PIN の 入力を求めます。トークンに保護された認証パス (専用の PIN パッドや生体読み取り機など) がある場合、\f2\-protected\fP オプションを指定する必要がありますが、パスワードオプションを指定する必要はありません。  
 465 .TP 3
 466 \-storepass[:env | :file] argument 
 467 .LP
 468 キーストアにアクセスするのに必要なパスワードを指定します。このオプションが必要なのは、JAR ファイルに署名を付けるときだけです (JAR ファイルを検証するときは不要)。その場合、 \f2\-storepass\fP オプションをコマンド行で指定しなかった場合は、新しいパスワードの入力を求められます。 
 469 .LP
 470 修飾子 \f2env\fP または \f2file\fP が指定されていない場合、パスワードの値は \f2argument\fP になります。それ以外の場合、パスワードは次のようにして取得されます。 
 471 .RS 3
 472 .TP 2
 473 o
 474 \f2env\fP: \f2argument\fP という名前の環境変数からパスワードを取得する 
 475 .TP 2
 476 o
 477 \f2file\fP: \f2argument\fP という名前のファイルからパスワードを取得する 
 478 .RE
 479 .LP
 480 注: テストを目的とする場合、またはセキュリティー保護されたシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。  
 481 .TP 3
 482 \-keypass[:env | :file] argument 
 483 .LP
 484 コマンド行で指定された別名に対応するキーストアエントリの非公開鍵を保護するのに使うパスワードを指定します。\f3jarsigner\fP を使って JAR ファイルに署名を付けるときは、パスワードが必要です。コマンド行でパスワードが指定されておらず、必要なパスワードがストアのパスワードと異なる場合は、パスワードの入力を求められます。 
 485 .LP
 486 修飾子 \f2env\fP または \f2file\fP が指定されていない場合、パスワードの値は \f2argument\fP になります。それ以外の場合、パスワードは次のようにして取得されます。 
 487 .RS 3
 488 .TP 2
 489 o
 490 \f2env\fP: \f2argument\fP という名前の環境変数からパスワードを取得する 
 491 .TP 2
 492 o
 493 \f2file\fP: \f2argument\fP という名前のファイルからパスワードを取得する 
 494 .RE
 495 .LP
 496 注: テストを目的とする場合、またはセキュリティー保護されたシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。  
 497 .TP 3
 498 \-sigfile file 
 499 .SF ファイルと .DSA ファイルの生成に使うベースファイル名を指定します。たとえば、\f2file\fP に DUKESIGN を指定すると、生成される .SF ファイルと .DSA ファイルの名前は、それぞれ DUKESIGN.SF と DUKESIGN.DSA になります。 これらのファイルは、署名付き JAR ファイルの META\-INF ディレクトリに置かれます。 
 500 .LP
 501 \f2file\fP に使用できる文字は「a\-zA\-Z0\-9_\-」です。つまり、文字、数字、下線、およびハイフンだけを使用できます。注: .SF および .DSA のファイル名では、小文字はすべて大文字に変換されます。 
 502 .LP
 503 \-sigfile \f2\-sigfile\fP オプションを指定しなかった場合、.SF ファイルと .DSA ファイルのベースファイル名は、コマンド行で指定された別名の先頭の 8 文字をすべて大文字に変換したものになります。別名が 8 文字未満の場合は、別名がそのまま使われます。別名の中に、署名ファイル名に使用できない文字が含まれている場合は、該当する文字を下線 (_) に置き換えてファイル名が作成されます。  
 504 .TP 3
 505 \-sigalg algorithm 
 506 JAR ファイルの署名に使用する署名アルゴリズムの名前を指定します。 
 507 .LP
 508 標準署名アルゴリズム名の一覧については、「Java Cryptography Architecture」にある 
 509 .na
 510 \f2「Appendix A 」\fP @
 511 .fi
 512 http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。このアルゴリズムは、JAR ファイルの署名に使用する秘密鍵と互換性のあるものでなければなりません。このオプションを指定しなかった場合、秘密鍵のタイプに応じて SHA1withDSA、SHA256withRSA、SHA256withECDSA のいずれかが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、あるいはユーザーがそのようなプロバイダを \f2\-providerClass\fP オプションを使って指定する必要があります。そうでない場合、コマンドの実行が失敗します。  
 513 .TP 3
 514 \-digestalg algorithm 
 515 JAR ファイルのエントリをダイジェストする際に使用するメッセージダイジェストアルゴリズムの名前を指定します。 
 516 .LP
 517 標準メッセージダイジェストアルゴリズム名の一覧については、「Java Cryptography Architecture」にある 
 518 .na
 519 \f2「Appendix A 」\fP @
 520 .fi
 521 http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。このオプションを指定しなかった場合、SHA256 が使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、あるいはユーザーがそのようなプロバイダを \f2\-providerClass\fP オプションを使って指定する必要があります。そうでない場合、コマンドの実行が失敗します。  
 522 .TP 3
 523 \-signedjar file 
 524 署名付き JAR ファイルの名前を指定します。 
 525 .LP
 526 コマンド行で名前を指定しなかった場合は、入力 JAR ファイル (署名の対象となる JAR ファイル) の名前と同じ名前が使われます。 この場合、入力 JAR ファイルは署名付き JAR ファイルによって上書きされます。  
 527 .TP 3
 528 \-verify 
 529 コマンド行でこのオプションが指定されている場合は、指定された JAR ファイルが検証されます。 JAR ファイルへの署名は行われません。検証が成功すると、「jar verified」 というメッセージが表示されます。署名されていない JAR ファイル、またはサポートされていないアルゴリズム (RSA プロバイダのインストールを終了していない場合の RSA など) を使って署名された JAR ファイルを検証しようとすると、「jar is unsigned. (signatures missing or not parsable)」というメッセージが表示されます。 
 530 .LP
 531 署名付き JAR ファイルは、\f3jarsigner\fP または JDK 1.1 の \f3javakey\fP ツール、あるいはその両方を使って検証できます。 
 532 .LP
 533 検証についての詳細は、「JAR ファイルの検証」を参照してください。  
 534 .TP 3
 535 \-certs 
 536 コマンド行で、 \f2\-verify\fP および \f2\-verbose\fP オプションとともにこのオプションを指定した場合、JAR ファイルの各署名者の証明書情報が出力に含まれます。証明書情報には次のものが含まれます。 
 537 .RS 3
 538 .TP 2
 539 o
 540 署名者の公開鍵を証明する (.DSA ファイルに格納された) 証明書の種類の名前 
 541 .TP 2
 542 o
 543 証明書が X. 証明書 (つまり、 \f2java.security.cert.X509Certificate\fP のインスタンス) である場合は、署名者の識別名 
 544 .RE
 545 .LP
 546 キーストアの確認も行われます。コマンド行でキーストアの値が指定されていない場合、デフォルトのキーストアファイルがあれば、検査されます。署名者の公開鍵の証明書がキーストア内のエントリと一致した場合は、次の情報も表示されます。 
 547 .RS 3
 548 .TP 2
 549 o
 550 署名者に該当するキーストアエントリの別名。この別名は括弧で囲まれます。 ただし、キーストアではなく JDK 1.1 のアイデンティティーデータベースに由来する署名者の場合は、括弧ではなく大括弧で囲まれます。 
 551 .RE
 552 .TP 3
 553 \-certchain file 
 554 コマンド行で指定した別名で決まるキーストアエントリの非公開鍵に関連付けられた証明書チェーンが完全でない場合に、使用すべき証明書チェーンを指定します。そのような状態になる可能性があるのは、キーストアがハードウェアトークン上に格納されているが、そこには証明書チェーンの全体を保持できるだけの領域が存在していないような場合です。このファイルは一連の X.509 証明書が順に連結されたもの、PKCS#7 形式の単一データブロックのいずれかとなり、そのエンコーディング形式はバイナリエンコーディング形式、Internet RFC 1421 標準で規定される印刷可能エンコーディング形式 (BASE64 エンコーディングとも呼ばれる) のいずれかになります。 
 555 .TP 3
 556 \-verbose 
 557 コマンド行でこのオプションが指定されている場合、\f3jarsigner\fP は「冗長」モードで動作し、JAR の署名または検証の進行状況に関する追加情報を出力します。 
 558 .TP 3
 559 \-internalsf 
 560 以前は、JAR ファイルの署名時に生成された .DSA (署名ブロック) ファイルの中に、生成された .SF ファイル (署名ファイル) の完全なコピーが符号化された形で含まれていました。この動作は変更されました。この動作は変更になり、現在では、出力 JAR ファイル全体のサイズを小さくするために、デフォルトでは .SF ファイルが .DSA ファイルに含まれないようになっています。ただし、 \f2\-internalsf\fP オプションをコマンド行で指定すると、以前と同じように動作します。\f3このオプションは、テストを行う場合には便利ですが、それ以外には使用しないでください。 このオプションを使用すると、有益な最適化が行われなくなります。\fP 
 561 .TP 3
 562 \-sectionsonly 
 563 コマンド行でこのオプションが指定されている場合、JAR ファイルの署名時に生成される .SF ファイル (署名ファイル) には、マニフェストファイル全体のハッシュを含むヘッダーは追加されません。この場合、.SF ファイルに含まれるのは、JAR ファイル内の各ソースファイルに関する情報およびハッシュだけです。詳細は、「署名 (.SF) ファイル」を参照してください。 
 564 .LP
 565 デフォルトでは、最適化を行うために、マニフェストファイル全体のハッシュを含むヘッダーが追加されます。ヘッダーが存在する場合は、JAR ファイルの検証時に、まずヘッダー内のハッシュが、マニフェストファイル全体のハッシュと実際に一致するかどうかが確認されます。ハッシュが一致する場合、検証は次の手順に進みます。ハッシュが一致しない場合は、効率的には劣る方法を使って検証を行います。 具体的には、.SF ファイル内の各ソースファイル情報セクションのハッシュが、マニフェストファイル内の対応するセクションのハッシュと一致するかどうかを確認します。 
 566 .LP
 567 詳細は、「JAR ファイルの検証」を参照してください。 
 568 .LP
 569 \f3このオプションは、テストを行う場合には便利ですが、それ以外には使用しないでください。 このオプションを使用すると、有益な最適化が行われなくなります。\fP  
 570 .TP 3
 571 \-protected 
 572 \f2true\fP または \f2false\fP。専用 PIN リーダーなどの保護された認証パスを介してパスワードを指定する必要がある場合には、この値を \f2true\fP に指定してください。 
 573 .TP 3
 574 \-providerClass provider\-class\-name 
 575 サービスプロバイダがセキュリティープロパティーファイル (\f2java.security\fP) のリストに入っていないときに、暗号化サービスプロバイダのマスタークラスファイルの名前を指定します。 
 576 .LP
 577 \f2\-providerArg\fP \f2ConfigFilePath\fP オプションと組み合わせて使用します。keytool と jarsigner はプロバイダを動的にインストールします (ここで、\f2ConfigFilePath\fP はトークン設定ファイルへのパスです)。セキュリティープロパティーファイル内で Sun PKCS#11 プロバイダが設定されていない場合に PKCS#11 キーストアを一覧表示するコマンドの例を次に示します。 
 578 .nf
 579 \f3
 580 .fl
 581 jarsigner \-keystore NONE \-storetype PKCS11 \\ 
 582 .fl
 583           \-providerClass sun.security.pkcs11.SunPKCS11 \\ 
 584 .fl
 585           \-providerArg /foo/bar/token.config \\ 
 586 .fl
 587           \-list
 588 .fl
 589 \fP
 590 .fi
 591 .TP 3
 592 \-providerName providerName 
 593 \f2java.security\fP セキュリティープロパティーファイル内で 2 つ以上のプロバイダが設定されている場合、\f2\-providerName\fP オプションを使って特定のプロバイダインスタンスを選択できます。このオプションの引数は、プロバイダの名前です。 
 594 .LP
 595 Sun PKCS#11 プロバイダの場合、\f2providerName\fP は \f2SunPKCS11\-\fP\f2TokenName\fP という形式になります。 ここで「\f2TokenName\fP」は、プロバイダインスタンスが構成された名前の接尾辞です。 詳細は
 596 .na
 597 \f2構成属性の表\fP @
 598 .fi
 599 http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#ATTRSを参照してください。たとえば、以下のコマンドでは、名前接尾辞 \f2SmartCard\fP の PKCS#11 キーストアプロバイダインスタンスの内容をリストします。 
 600 .nf
 601 \f3
 602 .fl
 603 jarsigner \-keystore NONE \-storetype PKCS11 \\ 
 604 .fl
 605         \-providerName SunPKCS11\-SmartCard \\ 
 606 .fl
 607         \-list
 608 .fl
 609 \fP
 610 .fi
 611 .TP 3
 612 できますjavaoption 
 613 指定された \f2javaoption\fP 文字列を Java インタプリタに直接渡します。\f3jarsigner\fP は、実際には Java インタプリタに対する「ラッパー」です。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。使用可能なインタプリタオプションの一覧を表示するには、 \f2java \-h\fP または \f2java \-X\fP とコマンド行から入力します。 
 614 .LP
 615 .TP 3
 616 \-tsa url 
 617 \f2「\-tsa http://example.tsa.url」\fP が JAR ファイルの署名時にコマンド行に表示される場合、署名のタイムスタンプが生成されます。URL \f2http://example.tsa.url\fP は、TSA (Time Stamping Authority) の場所を特定します。これは、 \f2\-tsacert\fP オプションで検出された URL をオーバーライドします。 \f2\-tsa\fP オプションでは、TSA の公開鍵証明書をキーストアに配置する必要はありません。 
 618 .LP
 619 タイムスタンプを生成するために、 \f2jarsigner\fP は、
 620 .na
 621 \f2RFC 3161\fP @
 622 .fi
 623 http://www.ietf.org/rfc/rfc3161.txt で定義されている タイムスタンププロトコル (TSP) を使用して TSA と通信します。成功すると、TSA から返されたタイムスタンプトークンは署名ブロックファイルの署名とともに保存されます。 
 624 .LP
 625 .TP 3
 626 \-tsacert alias 
 627 \f2「\-tsacert alias」\fP が JAR ファイルの署名時にコマンド行に表示される場合、署名のタイムスタンプが生成されます。 \f2alias\fP は、キーストア内の現在有効な TSA の公開鍵証明書を特定します。エントリの証明書で、TSA の場所を特定する URL を含む Subject Information Access 拡張機能が確認されます。 
 628 .LP
 629 TSA の公開鍵証明書は、 \f2\-tsacert を使った場合、キーストアに配置されている必要があります。\fP. 
 630 .LP
 631 .TP 3
 632 \-altsigner class 
 633 代替署名機構を使用することを指定します。完全修飾クラス名は、com.sun.jarsigner.ContentSigner 抽象クラスを拡張するクラスファイルを \f2特定します。\fP. このクラスファイルへのパスは、 \f2\-altsignerpath\fP オプションによって定義されます。 \f2\-altsigner\fP オプションが使用されると、 \f2jarsigner\fP は、指定されたクラスが提供する署名機構を使用します。そうでない場合、 \f2jarsigner\fP はデフォルトの署名機構を使用します。 
 634 .LP
 635 たとえば、 \f2com.sun.sun.jarsigner.AuthSigner\fP という名前のクラスが提供する署名機構を使用するには、 \f2jarsigner\fP オプション \f2「\-altsigner com.sun.jarsigner.AuthSigner」を使用します。\fP 
 636 .LP
 637 .TP 3
 638 \-altsignerpath classpathlist 
 639 クラスファイル (そのクラスファイル名は前述の \f2\-altsigner\fP オプションで指定される) およびそのクラスが依存するすべての JAR ファイルへのパスを指定します。クラスファイルが JAR ファイル内にある場合、以下の例のように JAR ファイルへのパスが指定されます。 
 640 .LP
 641 絶対パスまたは現在のディレクトリからの相対パスを指定できます。 \f2classpathlist\fP に複数のパスや JAR ファイルが含まれる場合には、それらを Solaris の場合はコロン (\f2:\fP) で、Windows の場合はセミコロン (\f2;\fP) でそれぞれ区切ります。目的のクラスがすでに検索パス内にある場合は、このオプションは不要です。 
 642 .LP
 643 クラスファイルを含む、JAR ファイルへのパスを指定する例を示します。 
 644 .nf
 645 \f3
 646 .fl
 647 \-altsignerpath /home/user/lib/authsigner.jar
 648 .fl
 649 \fP
 650 .fi
 651 .LP
 652 JAR ファイル名が含まれていることに注意してください。 
 653 .LP
 654 クラスファイルを含む JAR ファイルへのパスを指定する例を示します。 
 655 .nf
 656 \f3
 657 .fl
 658 \-altsignerpath /home/user/classes/com/sun/tools/jarsigner/
 659 .fl
 660 \fP
 661 .fi
 662 .LP
 663 JAR ファイル名は含まれていないことに留意してください。  
 664 .TP 3
 665 \-strict 
 666 署名または検証処理中に、何らかの警告メッセージが表示される場合があります。コマンド行でこのオプションを指定すると、見つかった警告メッセージがツールの終了コードに反映されます。詳細は「警告」の項を参照してください。 
 667 .TP 3
 668 \-verbose:sub\-options 
 669 検証処理で、 \f2\-verbose\fP オプションは、表示する情報の量を決定するサブオプションを取ります。 \f2\-certs\fP も指定した場合、デフォルトモード (またはサブオプション all) では、エントリが処理されるたびにそれらの各エントリが表示され、そのあとに JAR ファイルの各署名者の証明書情報も表示されます。 \f2\-certs\fP と \f2\-verbose:grouped\fP サブオプションを指定した場合、同じ署名者情報を持つエントリとその証明書情報が、いっしょにグループ化されて表示されます。 \f2\-certs\fP と \f2\-verbose:summary\fP サブオプションを指定した場合、同じ署名者情報を持つエントリとその証明書情報がいっしょにグループ化されて表示されますが、各エントリの詳細が「1 つのエントリ (およびそれ以上)」として要約されて表示されます。詳細は例の項を参照してください。 
 670 .RE
 671 
 672 .LP
 673 .SH "例"
 674 .LP
 675 .SS 
 676 JAR ファイルの署名
 677 .LP
 678 .LP
 679 bundle.jar という名前の JAR ファイルがあるとします。このファイルに、キーストアの別名が jane であるユーザーの非公開鍵を使って、署名を付けるとします。この場合、次のコマンドを実行すると、JAR ファイルに署名を付けて sbundle.jar という署名付き JAR ファイルを作成できます。
 680 .LP
 681 .nf
 682 \f3
 683 .fl
 684     jarsigner \-keystore /working/mystore \-storepass \fP\f4<キーストアのパスワード>\fP\f3
 685 .fl
 686       \-keypass \fP\f4<非公開鍵のパスワード>\fP\f3 \-signedjar sbundle.jar bundle.jar jane
 687 .fl
 688 \fP
 689 .fi
 690 
 691 .LP
 692 .LP
 693 上のコマンドでは \f2\-sigfile\fP が指定されていないため、署名付き JAR ファイルに格納される .SF ファイルと .DSA ファイルの名前は、別名からデフォルト名がつけられます。つまり、それらの名前は \f2JANE.SF\fP および \f2JANE.DSA\fP になります。
 694 .LP
 695 .LP
 696 ストアのパスワードと非公開鍵のパスワードをあとで入力する場合は、上のコマンドを短縮して次のように入力できます。
 697 .LP
 698 .nf
 699 \f3
 700 .fl
 701     jarsigner \-keystore /working/mystore
 702 .fl
 703       \-signedjar sbundle.jar bundle.jar jane
 704 .fl
 705 \fP
 706 .fi
 707 
 708 .LP
 709 .LP
 710 デフォルトのキーストア (ホームディレクトリ内の .keystore という名前のキーストア) を使用する場合は、次に示すように、キーストアの指定を省略できます。
 711 .LP
 712 .nf
 713 \f3
 714 .fl
 715     jarsigner \-signedjar sbundle.jar bundle.jar jane
 716 .fl
 717 \fP
 718 .fi
 719 
 720 .LP
 721 .LP
 722 最後に、入力 JAR ファイル (\f2bundle.jar\fP) を署名付き JAR ファイルで単純に上書きする場合は、次のように \f2\-signedjar\fP オプションを指定する必要はありません。
 723 .LP
 724 .nf
 725 \f3
 726 .fl
 727     jarsigner bundle.jar jane
 728 .fl
 729 \fP
 730 .fi
 731 
 732 .LP
 733 .SS 
 734 署名付き JAR ファイルの検証
 735 .LP
 736 .LP
 737 次に示すのは、署名付き JAR ファイルを検証し、署名が有効で JAR ファイルが改変されていないことを確認するためのコマンド例です。
 738 .LP
 739 .nf
 740 \f3
 741 .fl
 742     jarsigner \-verify sbundle.jar
 743 .fl
 744 \fP
 745 .fi
 746 
 747 .LP
 748 .LP
 749 検証が成功すると、次のようなメッセージが表示されます。
 750 .LP
 751 .nf
 752 \f3
 753 .fl
 754     jar verified.
 755 .fl
 756 \fP
 757 .fi
 758 
 759 .LP
 760 .LP
 761 というプロンプトが表示されます。検証が成功しなかった場合は、エラーメッセージが表示されます。
 762 .LP
 763 .LP
 764 \-verbose オプションを使うと、 \f2より多くの情報が\fP 表示されます。\-verbose オプション付きで \f3jarsigner\fP \f2を使用する例とその出力例を、\fP 次に示します。
 765 .LP
 766 .nf
 767 \f3
 768 .fl
 769     jarsigner \-verify \-verbose sbundle.jar
 770 .fl
 771 
 772 .fl
 773            198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST.MF
 774 .fl
 775            199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.SF
 776 .fl
 777           1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.DSA
 778 .fl
 779     smk   2752 Fri Sep 26 16:12:30 PDT 1997 AclEx.class
 780 .fl
 781     smk    849 Fri Sep 26 16:12:46 PDT 1997 test.class
 782 .fl
 783 
 784 .fl
 785       s = 署名が検証されました
 786 .fl
 787       m = マニフェストにエントリが記載されています
 788 .fl
 789       k = キーストアで 1 つ以上の証明書が見つかりました
 790 .fl
 791 
 792 .fl
 793     JAR が検証されました。
 794 .fl
 795 \fP
 796 .fi
 797 
 798 .LP
 799 .SS 
 800 証明書情報を使った検証
 801 .LP
 802 .LP
 803 検証時に \-verify と \-verbose オプションに加えて \f2\-certs\fP オプションを指定した場合は、 および JAR ファイルの各署名者の証明書情報も出力されます。これには、証明書タイプ、署名者識別名情報 (X.509 証明書の場合のみ)、および JAR ファイルの公開鍵の証明書がキーストアエントリの証明書に一致した場合には、括弧で囲まれた署名者のキーストア別名が含まれます。たとえば、
 804 .LP
 805 .nf
 806 \f3
 807 .fl
 808     jarsigner \-keystore /working/mystore \-verify \-verbose \-certs myTest.jar
 809 .fl
 810 
 811 .fl
 812            198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST.MF
 813 .fl
 814            199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.SF
 815 .fl
 816           1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.DSA
 817 .fl
 818            208 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST.SF
 819 .fl
 820           1087 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST.DSA
 821 .fl
 822     smk   2752 Fri Sep 26 16:12:30 PDT 1997 Tst.class
 823 .fl
 824 
 825 .fl
 826       X.509, CN=Test Group, OU=Java Software, O=Sun Microsystems, L=CUP, S=CA, C=US (javatest)
 827 .fl
 828       X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane)
 829 .fl
 830 
 831 .fl
 832       s = 署名が検証されました
 833 .fl
 834       m = マニフェストにエントリが記載されています
 835 .fl
 836       k = キーストアで 1 つ以上の証明書が見つかりました
 837 .fl
 838 
 839 .fl
 840     JAR が検証されました。
 841 .fl
 842 \fP
 843 .fi
 844 
 845 .LP
 846 .LP
 847 署名者の証明書が X.509 証明書でない場合は、識別名情報は表示されません。その場合には、証明書のタイプと別名だけが表示されます。たとえば、証明書が PGP 証明書で、別名が bob の場合は、次のように表示されます。
 848 .LP
 849 .nf
 850 \f3
 851 .fl
 852       PGP, (bob)
 853 .fl
 854 \fP
 855 .fi
 856 
 857 .LP
 858 .SS 
 859 アイデンティティーデータベースの署名者を含む JAR ファイルの検証
 860 .LP
 861 .LP
 862 JAR ファイルが、JDK 1.1 の \f3javakey\fP ツールを使って署名されている場合、署名者はアイデンティティーデータベース内の別名です。この場合、検証の出力には i という記号が含まれます。JAR ファイルが、アイデンティティーデータベース内の別名とキーストア内の別名の両方によって署名されている場合は、k と i の両方が表示されます。
 863 .LP
 864 .LP
 865 \f2\-certs\fP オプションを指定した場合、キーストアの別名は括弧で囲まれるのに対し、アイデンティティーデータベース内の別名は角括弧で囲まれて表示されます。次に例を示します。
 866 .LP
 867 .nf
 868 \f3
 869 .fl
 870     jarsigner \-keystore /working/mystore \-verify \-verbose \-certs writeFile.jar
 871 .fl
 872 
 873 .fl
 874            198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST.MF
 875 .fl
 876            199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.SF
 877 .fl
 878           1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.DSA
 879 .fl
 880            199 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE.SF
 881 .fl
 882           1013 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE.DSA
 883 .fl
 884    smki   2752 Fri Sep 26 16:12:30 PDT 1997 writeFile.html
 885 .fl
 886 
 887 .fl
 888       X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane)
 889 .fl
 890       X.509, CN=Duke, OU=Java Software, O=Sun, L=cup, S=ca, C=us [duke]
 891 .fl
 892 
 893 .fl
 894       s = 署名が検証されました
 895 .fl
 896       m = マニフェストにエントリが記載されています
 897 .fl
 898       k = キーストアで 1 つ以上の証明書が見つかりました
 899 .fl
 900       i = アイデンティティースコープで 1 つ以上の証明書が見つかりました
 901 .fl
 902 
 903 .fl
 904     JAR が検証されました。
 905 .fl
 906 \fP
 907 .fi
 908 
 909 .LP
 910 .LP
 911 別名 duke は角括弧で囲まれているので、この別名はキーストアの別名ではなく、アイデンティティーデータベースの別名です。
 912 .LP
 913 .SH "警告"
 914 .LP
 915 署名/検証処理中には、jarsigner からさまざまな警告が表示される可能性があります。これらの警告コードは次のように定義されています。 
 916 .nf
 917 \f3
 918 .fl
 919          hasExpiringCert         2
 920 .fl
 921              この JAR に含まれるエントリの署名者の証明書が 6 か月以内に期限切れになります
 922 .fl
 923 
 924 .fl
 925          hasExpiredCert          4
 926 .fl
 927              この JAR に含まれるエントリの署名者の証明書が期限切れになっています。
 928 .fl
 929 
 930 .fl
 931          notYetValidCert         4
 932 .fl
 933              この JAR に含まれるエントリの署名者の証明書がまだ有効になっていません。
 934 .fl
 935 
 936 .fl
 937          chainNotValidated       4
 938 .fl
 939              この JAR に含まれるエントリの証明書チェーンの検証を正しく行えません。
 940 .fl
 941 
 942 .fl
 943          badKeyUsa ge             8
 944 .fl
 945              この JAR に含まれるエントリの署名者の証明書の KeyUsage 拡張がコードの署名を許可していません。
 946 .fl
 947 
 948 .fl
 949          badExtendedKeyUsage     8
 950 .fl
 951              この JAR に含まれるエントリの署名者の証明書の ExtendedKeyUsage 拡張が
 952 .fl
 953              コードの署名を許可していません。
 954 .fl
 955 
 956 .fl
 957          badNetscapeCertType     8
 958 .fl
 959              この JAR に含まれるエントリの署名者の証明書の NetscapeCertType 拡張が
 960 .fl
 961              コードの署名を許可していません。
 962 .fl
 963 
 964 .fl
 965          hasUnsignedEntry        16
 966 .fl
 967              この JAR には、完全性チェックが行われていない署名なしエントリが含まれています。
 968 .fl
 969 
 970 .fl
 971          notSignedByAlias        32
 972 .fl
 973              この JAR には、指定された別名によって署名されていない署名付きエントリが含まれています
 974 .fl
 975 
 976 .fl
 977          aliasNotInStore         32
 978 .fl
 979              この JAR には、このキーストアの別名によって署名されていない署名付きエントリが含まれています
 980 .fl
 981 
 982 .fl
 983 \fP
 984 .fi
 985 
 986 .LP
 987 .LP
 988 \f2\-strict\fP オプションを指定した場合、検出された警告の OR を取った値がツールの終了コードとして返されます。たとえば、エントリの署名に使用される証明書が期限切れになっていて、かつその証明書の keyUsage 拡張でファイルの署名が許可されていない場合、終了コード 12 (=4+8) が返されます。
 989 .LP
 990 .LP
 991 \f3注\fP: UNIX で使用可能な値は 0 から 255 だけであるため、終了コードは再利用されます。いずれにしても、署名/検証処理が失敗すると、次の終了コードが返されます。
 992 .LP
 993 .nf
 994 \f3
 995 .fl
 996 failure                 1
 997 .fl
 998 \fP
 999 .fi
1000 
1001 .LP
1002 .SS 
1003 JDK 1.1 との互換性
1004 .LP
1005 .LP
1006 \f3keytool\fP ツールと \f3jarsigner\fP ツールは、JDK 1.1 で提供されていた \f3javakey\fP ツールを完全に置き換えるものです。これらの新しいツールは、キーストアと非公開鍵をパスワードで保護する機能や、署名の生成に加えて署名を検証する機能など、\f3javakey\fP より多くのを機能を備えています。
1007 .LP
1008 .LP
1009 新しいキーストアアーキテクチャーは、\f3javakey\fP が作成して管理していたアイデンティティーデータベースに代わるものです。キーストア形式と、JDK 1.1 の \f3javakey\fP が使っていたデータベース形式との間には下位互換性はありません。ただし、次のことは可能です。
1010 .LP
1011 .RS 3
1012 .TP 2
1013 o
1014 \f3keytool\fP の \f2\-identitydb\fP コマンドを使うと、アイデンティティーデータベースの情報をキーストアにインポートできます。 
1015 .TP 2
1016 o
1017 \f3jarsigner\fP は、以前に \f3javakey\fP を使って署名された JAR ファイルに署名を付けることができます。 
1018 .TP 2
1019 o
1020 \f3jarsigner\fP は、\f3javakey\fPを使って署名された JAR ファイルを検証できます。したがって、jarsigner は、Java 2 SDK のキーストアではなく JDK 1.1 のアイデンティティーデータベースからの署名者別名を認識し、これらを対象に処理を行うことができます。 
1021 .RE
1022 
1023 .LP
1024 .LP
1025 次の表は、JDK 1.1.x で署名された JAR ファイルが、Java 2 プラットフォームでどのように扱われるかを示しています。
1026 .LP
1027 .LP
1028 .TS
1029 .if \n+(b.=1 .nr d. \n(.c-\n(c.-1
1030 .de 35
1031 .ps \n(.s
1032 .vs \n(.vu
1033 .in \n(.iu
1034 .if \n(.u .fi
1035 .if \n(.j .ad
1036 .if \n(.j=0 .na
1037 ..
1038 .nf
1039 .nr #~ 0
1040 .if n .nr #~ 0.6n
1041 .ds #d .d
1042 .if \(ts\n(.z\(ts\(ts .ds #d nl
1043 .fc
1044 .nr 33 \n(.s
1045 .rm 80 81 82 83 84
1046 .nr 34 \n(.lu
1047 .eo
1048 .am 80
1049 .br
1050 .di a+
1051 .35
1052 .ft \n(.f
1053 .ll \n(34u*1u/6u
1054 .if \n(.l<\n(80 .ll \n(80u
1055 .in 0
1056 \f3JAR ファイルのタイプ\fP
1057 .br
1058 .di
1059 .nr a| \n(dn
1060 .nr a- \n(dl
1061 ..
1062 .ec \
1063 .eo
1064 .am 81
1065 .br
1066 .di b+
1067 .35
1068 .ft \n(.f
1069 .ll \n(34u*1u/6u
1070 .if \n(.l<\n(81 .ll \n(81u
1071 .in 0
1072 \f31.1 データベース内のアイデンティティー\fP
1073 .br
1074 .di
1075 .nr b| \n(dn
1076 .nr b- \n(dl
1077 ..
1078 .ec \
1079 .eo
1080 .am 82
1081 .br
1082 .di c+
1083 .35
1084 .ft \n(.f
1085 .ll \n(34u*1u/6u
1086 .if \n(.l<\n(82 .ll \n(82u
1087 .in 0
1088 \f31.1 データベースから Java 2 Platform キーストアにインポートされる信頼できるアイデンティティー (4)\fP
1089 .br
1090 .di
1091 .nr c| \n(dn
1092 .nr c- \n(dl
1093 ..
1094 .ec \
1095 .eo
1096 .am 83
1097 .br
1098 .di d+
1099 .35
1100 .ft \n(.f
1101 .ll \n(34u*1u/6u
1102 .if \n(.l<\n(83 .ll \n(83u
1103 .in 0
1104 \f3ポリシーファイルがアイデンティティー/別名に特権を与える\fP
1105 .br
1106 .di
1107 .nr d| \n(dn
1108 .nr d- \n(dl
1109 ..
1110 .ec \
1111 .eo
1112 .am 84
1113 .br
1114 .di e+
1115 .35
1116 .ft \n(.f
1117 .ll \n(34u*1u/6u
1118 .if \n(.l<\n(84 .ll \n(84u
1119 .in 0
1120 すべてのコードに与えられるデフォルトの特権
1121 .br
1122 .di
1123 .nr e| \n(dn
1124 .nr e- \n(dl
1125 ..
1126 .ec \
1127 .eo
1128 .am 84
1129 .br
1130 .di f+
1131 .35
1132 .ft \n(.f
1133 .ll \n(34u*1u/6u
1134 .if \n(.l<\n(84 .ll \n(84u
1135 .in 0
1136 すべてのコードに与えられるデフォルトの特権
1137 .br
1138 .di
1139 .nr f| \n(dn
1140 .nr f- \n(dl
1141 ..
1142 .ec \
1143 .eo
1144 .am 84
1145 .br
1146 .di g+
1147 .35
1148 .ft \n(.f
1149 .ll \n(34u*1u/6u
1150 .if \n(.l<\n(84 .ll \n(84u
1151 .in 0
1152 すべてのコードに与えられるデフォルトの特権
1153 .br
1154 .di
1155 .nr g| \n(dn
1156 .nr g- \n(dl
1157 ..
1158 .ec \
1159 .eo
1160 .am 81
1161 .br
1162 .di h+
1163 .35
1164 .ft \n(.f
1165 .ll \n(34u*1u/6u
1166 .if \n(.l<\n(81 .ll \n(81u
1167 .in 0
1168 あり/信頼できない
1169 .br
1170 .di
1171 .nr h| \n(dn
1172 .nr h- \n(dl
1173 ..
1174 .ec \
1175 .eo
1176 .am 84
1177 .br
1178 .di i+
1179 .35
1180 .ft \n(.f
1181 .ll \n(34u*1u/6u
1182 .if \n(.l<\n(84 .ll \n(84u
1183 .in 0
1184 すべてのコードに与えられるデフォルトの特権(3)
1185 .br
1186 .di
1187 .nr i| \n(dn
1188 .nr i- \n(dl
1189 ..
1190 .ec \
1191 .eo
1192 .am 81
1193 .br
1194 .di j+
1195 .35
1196 .ft \n(.f
1197 .ll \n(34u*1u/6u
1198 .if \n(.l<\n(81 .ll \n(81u
1199 .in 0
1200 あり/信頼できない
1201 .br
1202 .di
1203 .nr j| \n(dn
1204 .nr j- \n(dl
1205 ..
1206 .ec \
1207 .eo
1208 .am 84
1209 .br
1210 .di k+
1211 .35
1212 .ft \n(.f
1213 .ll \n(34u*1u/6u
1214 .if \n(.l<\n(84 .ll \n(84u
1215 .in 0
1216 すべてのコードに与えられるデフォルトの特権(1,3)
1217 .br
1218 .di
1219 .nr k| \n(dn
1220 .nr k- \n(dl
1221 ..
1222 .ec \
1223 .eo
1224 .am 84
1225 .br
1226 .di l+
1227 .35
1228 .ft \n(.f
1229 .ll \n(34u*1u/6u
1230 .if \n(.l<\n(84 .ll \n(84u
1231 .in 0
1232 すべてのコードに与えられるデフォルトの特権とポリシーファイル内で与えられる特権
1233 .br
1234 .di
1235 .nr l| \n(dn
1236 .nr l- \n(dl
1237 ..
1238 .ec \
1239 .eo
1240 .am 84
1241 .br
1242 .di m+
1243 .35
1244 .ft \n(.f
1245 .ll \n(34u*1u/6u
1246 .if \n(.l<\n(84 .ll \n(84u
1247 .in 0
1248 すべてのコードに与えられるデフォルトの特権とポリシーファイル内で与えられる特権(2)
1249 .br
1250 .di
1251 .nr m| \n(dn
1252 .nr m- \n(dl
1253 ..
1254 .ec \
1255 .35
1256 .nf
1257 .ll \n(34u
1258 .nr 80 0
1259 .nr 38 \w署名付き JAR
1260 .if \n(80<\n(38 .nr 80 \n(38
1261 .nr 38 \w署名のない JAR
1262 .if \n(80<\n(38 .nr 80 \n(38
1263 .nr 38 \w署名付き JAR
1264 .if \n(80<\n(38 .nr 80 \n(38
1265 .nr 38 \w署名付き JAR
1266 .if \n(80<\n(38 .nr 80 \n(38
1267 .nr 38 \w署名付き JAR
1268 .if \n(80<\n(38 .nr 80 \n(38
1269 .nr 38 \w署名付き JAR
1270 .if \n(80<\n(38 .nr 80 \n(38
1271 .nr 38 \w署名付き JAR
1272 .if \n(80<\n(38 .nr 80 \n(38
1273 .nr 38 \w署名付き JAR
1274 .if \n(80<\n(38 .nr 80 \n(38
1275 .nr 38 \w署名付き JAR
1276 .if \n(80<\n(38 .nr 80 \n(38
1277 .nr 38 \w署名付き JAR
1278 .if \n(80<\n(38 .nr 80 \n(38
1279 .80
1280 .rm 80
1281 .nr 38 \n(a-
1282 .if \n(80<\n(38 .nr 80 \n(38
1283 .nr 81 0
1284 .nr 38 \wなし
1285 .if \n(81<\n(38 .nr 81 \n(38
1286 .nr 38 \wなし
1287 .if \n(81<\n(38 .nr 81 \n(38
1288 .nr 38 \wなし
1289 .if \n(81<\n(38 .nr 81 \n(38
1290 .nr 38 \wなし
1291 .if \n(81<\n(38 .nr 81 \n(38
1292 .nr 38 \wあり/信頼できる
1293 .if \n(81<\n(38 .nr 81 \n(38
1294 .nr 38 \wあり/信頼できる
1295 .if \n(81<\n(38 .nr 81 \n(38
1296 .nr 38 \wあり/信頼できる
1297 .if \n(81<\n(38 .nr 81 \n(38
1298 .nr 38 \wあり/信頼できる
1299 .if \n(81<\n(38 .nr 81 \n(38
1300 .81
1301 .rm 81
1302 .nr 38 \n(b-
1303 .if \n(81<\n(38 .nr 81 \n(38
1304 .nr 38 \n(h-
1305 .if \n(81<\n(38 .nr 81 \n(38
1306 .nr 38 \n(j-
1307 .if \n(81<\n(38 .nr 81 \n(38
1308 .nr 82 0
1309 .nr 38 \wなし
1310 .if \n(82<\n(38 .nr 82 \n(38
1311 .nr 38 \wなし
1312 .if \n(82<\n(38 .nr 82 \n(38
1313 .nr 38 \wあり
1314 .if \n(82<\n(38 .nr 82 \n(38
1315 .nr 38 \wなし
1316 .if \n(82<\n(38 .nr 82 \n(38
1317 .nr 38 \wなし
1318 .if \n(82<\n(38 .nr 82 \n(38
1319 .nr 38 \wあり
1320 .if \n(82<\n(38 .nr 82 \n(38
1321 .nr 38 \wあり
1322 .if \n(82<\n(38 .nr 82 \n(38
1323 .nr 38 \wなし
1324 .if \n(82<\n(38 .nr 82 \n(38
1325 .nr 38 \wあり
1326 .if \n(82<\n(38 .nr 82 \n(38
1327 .nr 38 \wなし
1328 .if \n(82<\n(38 .nr 82 \n(38
1329 .82
1330 .rm 82
1331 .nr 38 \n(c-
1332 .if \n(82<\n(38 .nr 82 \n(38
1333 .nr 83 0
1334 .nr 38 \wなし
1335 .if \n(83<\n(38 .nr 83 \n(38
1336 .nr 38 \wなし
1337 .if \n(83<\n(38 .nr 83 \n(38
1338 .nr 38 \wなし
1339 .if \n(83<\n(38 .nr 83 \n(38
1340 .nr 38 \wなし
1341 .if \n(83<\n(38 .nr 83 \n(38
1342 .nr 38 \wあり
1343 .if \n(83<\n(38 .nr 83 \n(38
1344 .nr 38 \wあり
1345 .if \n(83<\n(38 .nr 83 \n(38
1346 .nr 38 \wあり
1347 .if \n(83<\n(38 .nr 83 \n(38
1348 .nr 38 \wなし
1349 .if \n(83<\n(38 .nr 83 \n(38
1350 .nr 38 \wなし
1351 .if \n(83<\n(38 .nr 83 \n(38
1352 .nr 38 \wあり
1353 .if \n(83<\n(38 .nr 83 \n(38
1354 .83
1355 .rm 83
1356 .nr 38 \n(d-
1357 .if \n(83<\n(38 .nr 83 \n(38
1358 .nr 84 0
1359 .nr 38 \w\f3与えられる特権\fP
1360 .if \n(84<\n(38 .nr 84 \n(38
1361 .nr 38 \wすべての特権
1362 .if \n(84<\n(38 .nr 84 \n(38
1363 .nr 38 \wすべての特権 (1)
1364 .if \n(84<\n(38 .nr 84 \n(38
1365 .nr 38 \wすべての特権 (1)
1366 .if \n(84<\n(38 .nr 84 \n(38
1367 .84
1368 .rm 84
1369 .nr 38 \n(e-
1370 .if \n(84<\n(38 .nr 84 \n(38
1371 .nr 38 \n(f-
1372 .if \n(84<\n(38 .nr 84 \n(38
1373 .nr 38 \n(g-
1374 .if \n(84<\n(38 .nr 84 \n(38
1375 .nr 38 \n(i-
1376 .if \n(84<\n(38 .nr 84 \n(38
1377 .nr 38 \n(k-
1378 .if \n(84<\n(38 .nr 84 \n(38
1379 .nr 38 \n(l-
1380 .if \n(84<\n(38 .nr 84 \n(38
1381 .nr 38 \n(m-
1382 .if \n(84<\n(38 .nr 84 \n(38
1383 .35
1384 .nf
1385 .ll \n(34u
1386 .nr 38 1n
1387 .nr 79 0
1388 .nr 40 \n(79+(0*\n(38)
1389 .nr 80 +\n(40
1390 .nr 41 \n(80+(3*\n(38)
1391 .nr 81 +\n(41
1392 .nr 42 \n(81+(3*\n(38)
1393 .nr 82 +\n(42
1394 .nr 43 \n(82+(3*\n(38)
1395 .nr 83 +\n(43
1396 .nr 44 \n(83+(3*\n(38)
1397 .nr 84 +\n(44
1398 .nr TW \n(84
1399 .if t .if \n(TW>\n(.li .tm Table at line 1078 file Input is too wide - \n(TW units
1400 .fc  
1401 .nr #T 0-1
1402 .nr #a 0-1
1403 .eo
1404 .de T#
1405 .ds #d .d
1406 .if \(ts\n(.z\(ts\(ts .ds #d nl
1407 .mk ##
1408 .nr ## -1v
1409 .ls 1
1410 .ls
1411 ..
1412 .ec
1413 .ne \n(a|u+\n(.Vu
1414 .ne \n(b|u+\n(.Vu
1415 .ne \n(c|u+\n(.Vu
1416 .ne \n(d|u+\n(.Vu
1417 .if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v)
1418 .if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v)
1419 .if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v)
1420 .if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v)
1421 .ta \n(80u \n(81u \n(82u \n(83u \n(84u 
1422 .nr 31 \n(.f
1423 .nr 35 1m
1424 \&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u'\h'|\n(43u'\h'|\n(44u'\f3与えられる特権\fP
1425 .mk ##
1426 .nr 31 \n(##
1427 .sp |\n(##u-1v
1428 .nr 37 \n(40u
1429 .in +\n(37u
1430 .a+
1431 .in -\n(37u
1432 .mk 32
1433 .if \n(32>\n(31 .nr 31 \n(32
1434 .sp |\n(##u-1v
1435 .nr 37 \n(41u
1436 .in +\n(37u
1437 .b+
1438 .in -\n(37u
1439 .mk 32
1440 .if \n(32>\n(31 .nr 31 \n(32
1441 .sp |\n(##u-1v
1442 .nr 37 \n(42u
1443 .in +\n(37u
1444 .c+
1445 .in -\n(37u
1446 .mk 32
1447 .if \n(32>\n(31 .nr 31 \n(32
1448 .sp |\n(##u-1v
1449 .nr 37 \n(43u
1450 .in +\n(37u
1451 .d+
1452 .in -\n(37u
1453 .mk 32
1454 .if \n(32>\n(31 .nr 31 \n(32
1455 .sp |\n(31u
1456 .ne \n(e|u+\n(.Vu
1457 .if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v)
1458 .ta \n(80u \n(81u \n(82u \n(83u \n(84u 
1459 .nr 31 \n(.f
1460 .nr 35 1m
1461 \&\h'|\n(40u'署名付き JAR\h'|\n(41u'なし\h'|\n(42u'なし\h'|\n(43u'なし\h'|\n(44u'
1462 .mk ##
1463 .nr 31 \n(##
1464 .sp |\n(##u-1v
1465 .nr 37 \n(44u
1466 .in +\n(37u
1467 .e+
1468 .in -\n(37u
1469 .mk 32
1470 .if \n(32>\n(31 .nr 31 \n(32
1471 .sp |\n(31u
1472 .ne \n(f|u+\n(.Vu
1473 .if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v)
1474 .ta \n(80u \n(81u \n(82u \n(83u \n(84u 
1475 .nr 31 \n(.f
1476 .nr 35 1m
1477 \&\h'|\n(40u'署名のない JAR\h'|\n(41u'なし\h'|\n(42u'なし\h'|\n(43u'なし\h'|\n(44u'
1478 .mk ##
1479 .nr 31 \n(##
1480 .sp |\n(##u-1v
1481 .nr 37 \n(44u
1482 .in +\n(37u
1483 .f+
1484 .in -\n(37u
1485 .mk 32
1486 .if \n(32>\n(31 .nr 31 \n(32
1487 .sp |\n(31u
1488 .ne \n(g|u+\n(.Vu
1489 .if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v)
1490 .ta \n(80u \n(81u \n(82u \n(83u \n(84u 
1491 .nr 31 \n(.f
1492 .nr 35 1m
1493 \&\h'|\n(40u'署名付き JAR\h'|\n(41u'なし\h'|\n(42u'あり\h'|\n(43u'なし\h'|\n(44u'
1494 .mk ##
1495 .nr 31 \n(##
1496 .sp |\n(##u-1v
1497 .nr 37 \n(44u
1498 .in +\n(37u
1499 .g+
1500 .in -\n(37u
1501 .mk 32
1502 .if \n(32>\n(31 .nr 31 \n(32
1503 .sp |\n(31u
1504 .ne \n(h|u+\n(.Vu
1505 .ne \n(i|u+\n(.Vu
1506 .if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v)
1507 .if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v)
1508 .ta \n(80u \n(81u \n(82u \n(83u \n(84u 
1509 .nr 31 \n(.f
1510 .nr 35 1m
1511 \&\h'|\n(40u'署名付き JAR\h'|\n(41u'\h'|\n(42u'なし\h'|\n(43u'なし\h'|\n(44u'
1512 .mk ##
1513 .nr 31 \n(##
1514 .sp |\n(##u-1v
1515 .nr 37 \n(41u
1516 .in +\n(37u
1517 .h+
1518 .in -\n(37u
1519 .mk 32
1520 .if \n(32>\n(31 .nr 31 \n(32
1521 .sp |\n(##u-1v
1522 .nr 37 \n(44u
1523 .in +\n(37u
1524 .i+
1525 .in -\n(37u
1526 .mk 32
1527 .if \n(32>\n(31 .nr 31 \n(32
1528 .sp |\n(31u
1529 .ne \n(j|u+\n(.Vu
1530 .ne \n(k|u+\n(.Vu
1531 .if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v)
1532 .if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v)
1533 .ta \n(80u \n(81u \n(82u \n(83u \n(84u 
1534 .nr 31 \n(.f
1535 .nr 35 1m
1536 \&\h'|\n(40u'署名付き JAR\h'|\n(41u'\h'|\n(42u'なし\h'|\n(43u'あり\h'|\n(44u'
1537 .mk ##
1538 .nr 31 \n(##
1539 .sp |\n(##u-1v
1540 .nr 37 \n(41u
1541 .in +\n(37u
1542 .j+
1543 .in -\n(37u
1544 .mk 32
1545 .if \n(32>\n(31 .nr 31 \n(32
1546 .sp |\n(##u-1v
1547 .nr 37 \n(44u
1548 .in +\n(37u
1549 .k+
1550 .in -\n(37u
1551 .mk 32
1552 .if \n(32>\n(31 .nr 31 \n(32
1553 .sp |\n(31u
1554 .ne \n(l|u+\n(.Vu
1555 .if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v)
1556 .ta \n(80u \n(81u \n(82u \n(83u \n(84u 
1557 .nr 31 \n(.f
1558 .nr 35 1m
1559 \&\h'|\n(40u'署名付き JAR\h'|\n(41u'なし\h'|\n(42u'あり\h'|\n(43u'あり\h'|\n(44u'
1560 .mk ##
1561 .nr 31 \n(##
1562 .sp |\n(##u-1v
1563 .nr 37 \n(44u
1564 .in +\n(37u
1565 .l+
1566 .in -\n(37u
1567 .mk 32
1568 .if \n(32>\n(31 .nr 31 \n(32
1569 .sp |\n(31u
1570 .ne \n(m|u+\n(.Vu
1571 .if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v)
1572 .ta \n(80u \n(81u \n(82u \n(83u \n(84u 
1573 .nr 31 \n(.f
1574 .nr 35 1m
1575 \&\h'|\n(40u'署名付き JAR\h'|\n(41u'あり/信頼できる\h'|\n(42u'あり\h'|\n(43u'あり\h'|\n(44u'
1576 .mk ##
1577 .nr 31 \n(##
1578 .sp |\n(##u-1v
1579 .nr 37 \n(44u
1580 .in +\n(37u
1581 .m+
1582 .in -\n(37u
1583 .mk 32
1584 .if \n(32>\n(31 .nr 31 \n(32
1585 .sp |\n(31u
1586 .ta \n(80u \n(81u \n(82u \n(83u \n(84u 
1587 .nr 31 \n(.f
1588 .nr 35 1m
1589 \&\h'|\n(40u'署名付き JAR\h'|\n(41u'あり/信頼できる\h'|\n(42u'なし\h'|\n(43u'なし\h'|\n(44u'すべての特権
1590 .ta \n(80u \n(81u \n(82u \n(83u \n(84u 
1591 .nr 31 \n(.f
1592 .nr 35 1m
1593 \&\h'|\n(40u'署名付き JAR\h'|\n(41u'あり/信頼できる\h'|\n(42u'あり\h'|\n(43u'なし\h'|\n(44u'すべての特権 (1)
1594 .ta \n(80u \n(81u \n(82u \n(83u \n(84u 
1595 .nr 31 \n(.f
1596 .nr 35 1m
1597 \&\h'|\n(40u'署名付き JAR\h'|\n(41u'あり/信頼できる\h'|\n(42u'なし\h'|\n(43u'あり\h'|\n(44u'すべての特権 (1)
1598 .fc
1599 .nr T. 1
1600 .T# 1
1601 .35
1602 .rm a+
1603 .rm b+
1604 .rm c+
1605 .rm d+
1606 .rm e+
1607 .rm f+
1608 .rm g+
1609 .rm h+
1610 .rm i+
1611 .rm j+
1612 .rm k+
1613 .rm l+
1614 .rm m+
1615 .TE
1616 .if \n-(b.=0 .nr c. \n(.c-\n(d.-50
1617 
1618 .LP
1619 .LP
1620 注 \-
1621 .LP
1622 .RS 3
1623 .TP 3
1624 1.
1625 ポリシーファイル内にアイデンティティー/別名についての言及がある場合、それをキーストアにインポートして、ポリシーファイルの設定が与えられた特権に反映されるようにする必要があります。 
1626 .TP 3
1627 2.
1628 ポリシーファイル/キーストアの組み合わせは、アイデンティティーデータベース内の信頼できるアイデンティティーよりも優先されます。 
1629 .TP 3
1630 3.
1631 Java 2 プラットフォームでは、信頼できないアイデンティティーは無視されます。 
1632 .TP 3
1633 4.
1634 Java 2 SDK キーストアにインポートできるのは、信頼できるアイデンティティーだけです。 
1635 .RE
1636 
1637 .LP
1638 .SH "関連項目"
1639 .LP
1640 .RS 3
1641 .TP 2
1642 o
1643 jar(1) ツールのドキュメント 
1644 .TP 2
1645 o
1646 keytool(1) ツールのドキュメント 
1647 .TP 2
1648 o
1649 .na
1650 \f4jarsigner\fP\f2 ツールの使用例については、\fP @
1651 .fi
1652 http://download.oracle.com/javase/tutorial/security/index.html
1653 .na
1654 \f2「Java チュートリアル」\fP\f4の\fP @
1655 .fi
1656 http://download.oracle.com/javase/tutorial/index.html「Security」\f3を参照\fP 
1657 .RE
1658 
1659 .LP
1660