1 '\" t
   2 .\" Copyright (c) 1998, 2014, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20 .\" or visit www.oracle.com if you need additional information or have any
  21 .\" questions.
  22 .\"
  23 .\" Title: jarsigner
  24 .\" Language: Japanese
  25 .\" Date: 2013年11月21日
  26 .\" SectDesc: セキュリティ・ツール
  27 .\" Software: JDK 8
  28 .\" Arch: 汎用
  29 .\" Part Number: E58103-01
  30 .\" Doc ID: JSSON
  31 .\"
  32 .if n .pl 99999
  33 .TH "jarsigner" "1" "2013年11月21日" "JDK 8" "セキュリティ・ツール"
  34 .\" -----------------------------------------------------------------
  35 .\" * Define some portability stuff
  36 .\" -----------------------------------------------------------------
  37 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  38 .\" http://bugs.debian.org/507673
  39 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
  40 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  41 .ie \n(.g .ds Aq \(aq
  42 .el       .ds Aq '
  43 .\" -----------------------------------------------------------------
  44 .\" * set default formatting
  45 .\" -----------------------------------------------------------------
  46 .\" disable hyphenation
  47 .nh
  48 .\" disable justification (adjust text to left margin only)
  49 .ad l
  50 .\" -----------------------------------------------------------------
  51 .\" * MAIN CONTENT STARTS HERE *
  52 .\" -----------------------------------------------------------------
  53 .SH "名前"
  54 jarsigner \- Javaアーカイブ(JAR)ファイルに対して署名および検証を行います。
  55 .SH "概要"
  56 .sp
  57 .if n \{\
  58 .RS 4
  59 .\}
  60 .nf
  61 \fBjarsigner\fR [ \fIoptions\fR ] \fIjar\-file\fR \fIalias\fR
  62 .fi
  63 .if n \{\
  64 .RE
  65 .\}
  66 .sp
  67 .if n \{\
  68 .RS 4
  69 .\}
  70 .nf
  71 \fBjarsigner\fR \fB\-verify\fR [ \fIoptions\fR ] \fIjar\-file\fR [\fIalias \&.\&.\&.\fR]
  72 .fi
  73 .if n \{\
  74 .RE
  75 .\}
  76 .PP
  77 \fIoptions\fR
  78 .RS 4
  79 コマンド行オプション。オプションを参照してください。
  80 .RE
  81 .PP
  82 \-verify
  83 .RS 4
  84 \fB\-verify\fRオプションでは、JARファイル名の後に0個以上のキーストア別名を指定できます。\fB\-verify\fRオプションが指定された場合、\fBjarsigner\fRコマンドでは、JARファイル内の各署名付きエンティティの検証に使用される証明書が、いずれかのキーストア別名に一致することをチェックします。別名は、\fB\-keystore\fRで指定されたキーストア内またはデフォルトのキーストア内に定義されます。
  85 .sp
  86 \fB\-strict\fRオプションも指定した場合、\fBjarsigner\fRコマンドにより重大な警告が検出されると、メッセージ「jarが検証されました。署名者エラー」が表示されます。
  87 .RE
  88 .PP
  89 \fIjar\-file\fR
  90 .RS 4
  91 署名されるJARファイル。
  92 .sp
  93 \fB\-strict\fRオプションも指定した場合、\fBjarsigner\fRコマンドにより重大な警告が検出されると、メッセージ「jarは署名されました \- 署名者エラーがあります。」というメッセージが表示されます。
  94 .RE
  95 .PP
  96 \fIalias\fR
  97 .RS 4
  98 別名は、\fB\-keystore\fRで指定されたキーストア内またはデフォルトのキーストア内に定義されます。
  99 .RE
 100 .SH "説明"
 101 .PP
 102 \fBjarsigner\fRツールには、次の2つの目的があります。
 103 .sp
 104 .RS 4
 105 .ie n \{\
 106 \h'-04'\(bu\h'+03'\c
 107 .\}
 108 .el \{\
 109 .sp -1
 110 .IP \(bu 2.3
 111 .\}
 112 Javaアーカイブ(JAR)ファイルに署名する目的。
 113 .RE
 114 .sp
 115 .RS 4
 116 .ie n \{\
 117 \h'-04'\(bu\h'+03'\c
 118 .\}
 119 .el \{\
 120 .sp -1
 121 .IP \(bu 2.3
 122 .\}
 123 署名付きJARファイルの署名と整合性を検証する目的。
 124 .RE
 125 .PP
 126 JAR機能を使用すると、クラス・ファイル、イメージ、サウンドおよびその他のデジタル・データを単一のファイルにパッケージ化できるので、ファイルを迅速かつ容易に配布できます。\fBjar\fRという名前のツールを使用して、開発者はJARファイルを作成できます。(技術的な観点から言えば、すべてのZIPファイルもJARファイルとみなすことができます。ただし、\fBjar\fRコマンドによって作成されたJARファイル、または\fBjarsigner\fRコマンドによって処理されたJARファイルには、\fBMETA\-INF/MANIFEST\&.MF\fRファイルも含まれています。)
 127 .PP
 128 デジタル署名は、なんらかのデータ(署名の対象となるデータ)、およびエンティティ(人、会社など)の秘密鍵から計算されるビットの文字列です。手書きの署名同様、デジタル署名には多くの利点があります。
 129 .sp
 130 .RS 4
 131 .ie n \{\
 132 \h'-04'\(bu\h'+03'\c
 133 .\}
 134 .el \{\
 135 .sp -1
 136 .IP \(bu 2.3
 137 .\}
 138 署名の生成に使用された秘密鍵に対応する公開鍵を使用する計算によって、それが本物であることを検証できます。
 139 .RE
 140 .sp
 141 .RS 4
 142 .ie n \{\
 143 \h'-04'\(bu\h'+03'\c
 144 .\}
 145 .el \{\
 146 .sp -1
 147 .IP \(bu 2.3
 148 .\}
 149 秘密鍵が他人に知られない限り、デジタル署名の偽造は不可能です。
 150 .RE
 151 .sp
 152 .RS 4
 153 .ie n \{\
 154 \h'-04'\(bu\h'+03'\c
 155 .\}
 156 .el \{\
 157 .sp -1
 158 .IP \(bu 2.3
 159 .\}
 160 これは、署名が付いたデータの機能であり、他のデータの署名となるように要求できません。
 161 .RE
 162 .sp
 163 .RS 4
 164 .ie n \{\
 165 \h'-04'\(bu\h'+03'\c
 166 .\}
 167 .el \{\
 168 .sp -1
 169 .IP \(bu 2.3
 170 .\}
 171 署名付きデータは変更できません。データが変更された場合、署名によって本物であると検証できません。
 172 .RE
 173 .PP
 174 ファイルに対してエンティティの署名を生成するには、まず、エンティティは、そのエンティティに関連する公開鍵/秘密鍵のペアと、公開鍵を認証する1つ以上の証明書を持つ必要があります。証明書とは、あるエンティティからのデジタル署名付きの文書で、別のエンティティの公開鍵が特定の値を持つことを示しています。
 175 .PP
 176 \fBjarsigner\fRコマンドは、キーストアからの鍵と証明書情報を使用して、JARファイルのデジタル署名を生成します。キーストアは、秘密鍵、および対応する公開鍵を認証する、秘密鍵に関連したX\&.509証明書チェーンのデータベースです。\fBkeytool\fRコマンドを使用して、キーストアを作成および管理します。
 177 .PP
 178 \fBjarsigner\fRコマンドでは、エンティティの秘密鍵を使用して署名を生成します。署名付きJARファイルには、特に、ファイルへの署名に使用する秘密鍵に対応する公開鍵のキーストアからの証明書のコピーが含まれます。\fBjarsigner\fRコマンドでは、内部(署名ブロック・ファイル内)の証明書を使用して、署名付きJARファイルのデジタル署名を検証できます。
 179 .PP
 180 \fBjarsigner\fRコマンドでは、署名証明書の有効期間中にJARファイルが署名されたされたかどうかをシステムやデプロイヤ(Java Plug\-inを含む)がチェックできる、タイムスタンプを含む署名を生成できます。さらに、APIを使用すると、アプリケーションでタイムスタンプ情報を取得できます。
 181 .PP
 182 現時点では、\fBjarsigner\fRコマンドでは、\fBjar\fRコマンドまたはZIPファイルによって作成されたJARファイルのみに署名できます。JARファイルはZIPファイルと同じですが、JARファイルには\fBMETA\-INF/MANIFEST\&.MF\fRファイルも含まれている点が異なります。\fBMETA\-INF/MANIFEST\&.MF\fRファイルは、\fBjarsigner\fRコマンドによってZIPファイルに署名する際に作成されます。
 183 .PP
 184 デフォルトの\fBjarsigner\fRコマンドの動作では、JARまたはZIPファイルに署名します。\fB\-verify\fRオプションを使用して、署名付きJARファイルを検証します。
 185 .PP
 186 \fBjarsigner\fRコマンドは、署名または検証の後に署名者の証明書の検証も試行します。検証エラーまたはその他の問題が発生すると、コマンドにより警告メッセージが生成されます。\fB\-strict\fRオプションを指定した場合、コマンドにより重大な警告がエラーとして処理されます。エラーと警告を参照してください。
 187 .SS "キーストアの別名"
 188 .PP
 189 キーストアのすべてのエンティティは、一意の別名を使用してアクセスされます。
 190 .PP
 191 \fBjarsigner\fRコマンドを使用してJARファイルに署名するときは、署名の生成に必要な秘密鍵を含むキーストア・エントリの別名を指定する必要があります。たとえば、次のコマンドでは、\fBworking\fRディレクトリの\fBmystore\fRという名前のキーストアに含まれる別名\fBduke\fRに関連付けられた秘密鍵を使用して、\fBMyJARFile\&.jar\fRという名前のJARファイルに署名します。出力ファイルは指定されていないため、\fBMyJARFile\&.jar\fRは署名付きのJARファイルによって上書きされます。
 192 .sp
 193 .if n \{\
 194 .RS 4
 195 .\}
 196 .nf
 197 \fBjarsigner \-keystore /working/mystore \-storepass <keystore password>\fR
 198 \fB      \-keypass <private key password> MyJARFile\&.jar duke\fR
 199  
 200 .fi
 201 .if n \{\
 202 .RE
 203 .\}
 204 .PP
 205 キーストアはパスワードで保護されているので、ストアのパスワードを指定する必要があります。コマンド行で指定しないと、入力を求められます。同様に、秘密鍵もキーストア内でパスワードによって保護されているため、秘密鍵のパスワードを指定する必要があります。コマンド行でパスワードを指定していない場合、または指定したパスワートが保存されているパスワードと同じではない場合は、パスワードの入力を求められます。
 206 .SS "キーストアの場所"
 207 .PP
 208 \fBjarsigner\fRコマンドには、使用するキーストアのURLを指定する\fB\-keystore\fRオプションがあります。キーストアはデフォルトで、\fBuser\&.home\fRシステム・プロパティで決まるユーザーのホーム・ディレクトリの\fB\&.keystore\fRという名前のファイル内に格納されます。
 209 .PP
 210 Oracle Solarisシステムの場合、\fBuser\&.home\fRは、ユーザーのホーム・ディレクトリにデフォルト設定されます。
 211 .PP
 212 \fB\-keystore\fRオプションからの入力ストリームは、\fBKeyStore\&.load\fRメソッドに渡されます。URLとして\fBNONE\fRが指定されている場合は、nullのストリームが\fBKeyStore\&.load\fRメソッドに渡されます。\fBNONE\fRは、\fBKeyStore\fRクラスがファイルベースではない場合、たとえば、ハードウェア・トークン・デバイスに置かれている場合に指定します。
 213 .SS "キーストアの実装"
 214 .PP
 215 \fBjava\&.security package\fRで提供されている\fBKeyStore\fRクラスは、キーストア内の情報へのアクセスおよび情報の変更を行うための、明確に定義された多くのインタフェースを提供します。複数の異なる固定実装を指定することができ、各実装は特定のタイプのキーストアを対象とします。
 216 .PP
 217 現在、キーストアの実装を使用する2つのコマンド行ツール(\fBkeytool\fRと\fBjarsigner\fR)、およびポリシー・ツールという名前の1つのGUIベースのツールがあります。\fBKeyStore\fRクラスは公開されているため、JDKユーザーは、それを使用する他のセキュリティ・アプリケーションを書き込むことができます。
 218 .PP
 219 Oracleが提供する組込みのデフォルトの実装があります。これは、JKSという名前の独自のキーストア・タイプ(形式)を使用するもので、キーストアをファイルとして実装しています。組込みの実装では、各秘密鍵は個別のパスワードによって保護され、キーストア全体の整合性は(秘密鍵とは別の)パスワードによって保護されます。
 220 .PP
 221 キーストアの実装はプロバイダベースで、つまり、\fBKeyStore\fRクラスにより提供されるアプリケーション・インタフェースは、サービス・プロバイダ・インタフェース(SPI)に関して実装されます。対応する\fBKeystoreSpi\fR抽象クラスがあり、これも\fBjava\&.security package\fRに含まれています。このクラスが、プロバイダが実装する必要のあるサービス・プロバイダ・インタフェースのメソッドを定義しています。ここで、プロバイダとは、Java Security APIによってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。キーストアの実装を提供するには、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider\&.htmlにある
 222 Java暗号化アーキテクチャのプロバイダの実装方法で説明しているように、クライアントはプロバイダを実装し、\fBKeystoreSpi\fRサブクラスの実装を提供する必要があります。
 223 .PP
 224 アプリケーションでは、\fBKeyStore\fRクラスの\fBgetInstance\fRファクトリ・メソッドを使用して、様々なプロバイダから異なるタイプのキーストアの実装を選択できます。キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の秘密鍵とキーストア自体の整合性を保護するために使用されるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。
 225 .PP
 226 \fBjarsigner\fRおよび\fBpolicytool\fRコマンドは、URLを使用して指定できる任意の場所からファイルベースのキーストアを読み取ることができます。また、これらのコマンドは、Windows上のMSCAPIおよびすべてのプラットフォーム上のPKCS11で提供されるような非ファイルベースのキーストアを読み取ることができます。
 227 .PP
 228 \fBjarsigner\fRコマンドおよび\fBkeytool\fRコマンドの場合、\fB\-storetype\fRオプションを使用して、コマンド行でキーストアのタイプを指定できます。ポリシー・ツールの場合、\fB「キーストア」\fRメニューの\fB「編集」\fRコマンドを使用して、キーストアのタイプを指定できます。
 229 .PP
 230 ユーザーがキーストアのタイプを明示的に指定しなかった場合、セキュリティ・プロパティ・ファイルで指定された\fBkeystore\&.type\fRプロパティの値に基づいて、ツールによってキーストアの実装が選択されます。このセキュリティ・プロパティ・ファイルは\fBjava\&.security\fRと呼ばれ、JDKセキュリティ・プロパティ・ディレクトリ\fBjava\&.home/lib/security\fR内に存在しています。ここで、\fBjava\&.home\fRは実行時環境のディレクトリです。\fBjre\fRディレクトリは、JDKまたはJava Runtime Environment (JRE)の最上位のディレクトリにあります。
 231 .PP
 232 各ツールは、\fBkeystore\&.type\fRの値を取得し、そのタイプのキーストアを実装しているプロバイダが見つかるまで、インストールされているすべてのプロバイダを調べます。目的のプロバイダが見つかると、そのプロバイダからのキーストアの実装を使用します。
 233 .PP
 234 \fBKeyStore\fRクラスに定義されているstaticメソッド\fBgetDefaultType\fRを使用すると、アプリケーションやアプレットから\fBkeystore\&.type\fRプロパティの値を取得できます。次のコードの行では、\fBkeystore\&.type property\fRで指定された、デフォルトのキーストア・タイプのインスタンスを作成します。
 235 .sp
 236 .if n \{\
 237 .RS 4
 238 .\}
 239 .nf
 240 \fBKeyStore keyStore = KeyStore\&.getInstance(KeyStore\&.getDefaultType());\fR
 241  
 242 .fi
 243 .if n \{\
 244 .RE
 245 .\}
 246 .PP
 247 デフォルトのキーストア・タイプは、\fBjks\fR
 248 (Oracleが提供する独自のタイプのキーストアの実装)です。これは、セキュリティ・プロパティ・ファイル内の次の行によって指定されています。
 249 .sp
 250 .if n \{\
 251 .RS 4
 252 .\}
 253 .nf
 254 \fBkeystore\&.type=jks\fR
 255  
 256 .fi
 257 .if n \{\
 258 .RE
 259 .\}
 260 .PP
 261 キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、\fBJKS\fRは\fBjks\fRと同じになります。
 262 .PP
 263 ツールでデフォルト以外のキーストアの実装を使用するには、その行を変更して別のキーストアのタイプを指定します。たとえば、\fBpkcs12\fRと呼ばれるキーストアのタイプのキーストアの実装を提供するプロバイダ・パッケージがある場合、行を次のように変更します。
 264 .sp
 265 .if n \{\
 266 .RS 4
 267 .\}
 268 .nf
 269 \fBkeystore\&.type=pkcs12\fR
 270  
 271 .fi
 272 .if n \{\
 273 .RE
 274 .\}
 275 .PP
 276 \fB注意:\fR
 277 PKCS 11プロバイダ・パッケージを使用する場合、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/p11guide\&.htmlにある
 278 Java PKCS #11リファレンス・ガイドの「KeyTool」および「JarSigner」を参照してください。
 279 .SS "サポートされるアルゴリズム"
 280 .PP
 281 デフォルトで、\fBjarsigner\fRコマンドでは次のいずれかのアルゴリズムを使用してJARファイルに署名します。
 282 .sp
 283 .RS 4
 284 .ie n \{\
 285 \h'-04'\(bu\h'+03'\c
 286 .\}
 287 .el \{\
 288 .sp -1
 289 .IP \(bu 2.3
 290 .\}
 291 SHA1ダイジェスト・アルゴリズムを使用したデジタル署名アルゴリズム(DSA)
 292 .RE
 293 .sp
 294 .RS 4
 295 .ie n \{\
 296 \h'-04'\(bu\h'+03'\c
 297 .\}
 298 .el \{\
 299 .sp -1
 300 .IP \(bu 2.3
 301 .\}
 302 SHA256ダイジェスト・アルゴリズムを使用したRSAアルゴリズム。
 303 .RE
 304 .sp
 305 .RS 4
 306 .ie n \{\
 307 \h'-04'\(bu\h'+03'\c
 308 .\}
 309 .el \{\
 310 .sp -1
 311 .IP \(bu 2.3
 312 .\}
 313 SHA256と楕円曲線デジタル署名アルゴリズム(ECDSA)を使用した楕円曲線(EC)暗号方式アルゴリズム
 314 .RE
 315 .PP
 316 署名者の公開鍵と秘密鍵がDSA鍵である場合、\fBjarsigner\fRは\fBSHA1withDSA\fRアルゴリズムを使用してJARファイルに署名します。署名者の鍵がRSA鍵である場合、\fBjarsigner\fRは\fBSHA256withRSA\fRアルゴリズムを使用してJARファイルに署名しようとします。署名者の鍵がEC鍵である場合、\fBjarsigner\fRは\fBSHA256withECDSA\fRアルゴリズムを使用してJARファイルに署名します。
 317 .PP
 318 これらのデフォルトの署名アルゴリズムは、\fB\-sigalg\fRオプションを使用してオーバーライドできます。
 319 .SS "署名付きJARファイル"
 320 .PP
 321 \fBjarsigner\fRコマンドを使用してJARファイルに署名する場合、出力される署名付きJARファイルは入力JARファイルと同じですが、次の2つの追加ファイルがMETA\-INFディレクトリに置かれる点が異なります。
 322 .sp
 323 .RS 4
 324 .ie n \{\
 325 \h'-04'\(bu\h'+03'\c
 326 .\}
 327 .el \{\
 328 .sp -1
 329 .IP \(bu 2.3
 330 .\}
 331 \fB\&.SF\fR拡張子の付いた署名ファイル
 332 .RE
 333 .sp
 334 .RS 4
 335 .ie n \{\
 336 \h'-04'\(bu\h'+03'\c
 337 .\}
 338 .el \{\
 339 .sp -1
 340 .IP \(bu 2.3
 341 .\}
 342 \fB\&.DSA\fR、\fB\&.RSA\fRまたは\fB\&.EC\fR拡張子の付いた署名ブロック・ファイル
 343 .RE
 344 .PP
 345 これら2つのファイルのベース・ファイル名は、\fB\-sigFile\fRオプションの値から作成されます。たとえば、オプションが\fB\-sigFile MKSIGN\fRの場合、ファイルは\fBMKSIGN\&.SF\fRおよび\fBMKSIGN\&.DSA\fRという名前になります。
 346 .PP
 347 コマンド行で\fB\-sigfile\fRオプションを指定しなかった場合、\fB\&.SF\fRファイルと\fB\&.DSA\fRファイルのベース・ファイル名は、コマンド行で指定された別名の先頭の8文字をすべて大文字に変換したものになります。別名が8文字未満の場合は、別名がそのまま使用されます。別名に、署名ファイル名で使用できない文字が含まれている場合、ファイル名の作成時に、該当する文字がアンダースコア(_)文字に変換されます。有効な文字は、アルファベット、数字、アンダースコアおよびハイフンです。
 348 .PP
 349 署名ファイル
 350 .PP
 351 署名ファイル(\fB\&.SF\fRファイル)は、\fBjarsigner\fRコマンドを使用してファイルに署名する際にJARファイルに常に含まれるマニフェスト・ファイルと似ています。JARファイルに含まれているソース・ファイルごとに、\fB\&.SF\fRファイルには、マニフェスト・ファイルにあるような、次に示す3つの行があります。
 352 .sp
 353 .RS 4
 354 .ie n \{\
 355 \h'-04'\(bu\h'+03'\c
 356 .\}
 357 .el \{\
 358 .sp -1
 359 .IP \(bu 2.3
 360 .\}
 361 ファイル名
 362 .RE
 363 .sp
 364 .RS 4
 365 .ie n \{\
 366 \h'-04'\(bu\h'+03'\c
 367 .\}
 368 .el \{\
 369 .sp -1
 370 .IP \(bu 2.3
 371 .\}
 372 ダイジェスト・アルゴリズム(SHA)の名前
 373 .RE
 374 .sp
 375 .RS 4
 376 .ie n \{\
 377 \h'-04'\(bu\h'+03'\c
 378 .\}
 379 .el \{\
 380 .sp -1
 381 .IP \(bu 2.3
 382 .\}
 383 SHAダイジェストの値
 384 .RE
 385 .PP
 386 マニフェスト・ファイルでは、各ソース・ファイルのSHAダイジェストの値は、ソース・ファイルのバイナリ・データのダイジェスト(ハッシュ)になります。\fB\&.SF\fRファイルでは、指定されたソース・ファイルのダイジェストの値は、ソース・ファイルのマニフェスト・ファイル内のその3行のハッシュになります。
 387 .PP
 388 署名ファイルには、デフォルトで、マニフェスト・ファイル全体のハッシュが格納されたヘッダーが含まれています。ヘッダーにはマニフェスト・ヘッダーのハッシュも含まれています。ヘッダーが存在すると、検証の最適化が有効になります。JARファイルの検証を参照してください。
 389 .PP
 390 署名ブロック・ファイル
 391 .PP
 392 \fB\&.SF\fRファイルには署名が付けられ、署名は署名ブロック・ファイルに置かれます。このファイルには、署名に使用された秘密鍵に対応する公開鍵を認証するキーストアからの証明書または証明書チェーンも、内部でエンコードされて含まれています。ファイルの拡張子は、使用されるダイジェスト・アルゴリズムに応じて、\fB\&.DSA\fR、\fB\&.RSA\fRまたは\fB\&.EC\fRになります。
 393 .SS "署名タイムスタンプ"
 394 .PP
 395 \fBjarsigner\fRコマンドでは、JARファイルの署名時に署名タイムスタンプを生成および保存できます。さらに、\fBjarsigner\fRは代替署名機構をサポートします。この動作は省略可能で、署名時に次の各オプションによって制御されます。オプションを参照してください。
 396 .sp
 397 .if n \{\
 398 .RS 4
 399 .\}
 400 .nf
 401 \fB\-tsa \fR\fB\fIurl\fR\fR
 402 \fB\-tsacert \fR\fB\fIalias\fR\fR
 403 \fB\-altsigner \fR\fB\fIclass\fR\fR
 404 \fB\-altsignerpath \fR\fB\fIclasspathlist\fR\fR
 405 \fB\-tsapolicyid \fR\fB\fIpolicyid\fR\fR
 406  
 407 .fi
 408 .if n \{\
 409 .RE
 410 .\}
 411 .SS "JARファイルの検証"
 412 .PP
 413 JARファイルの検証が成功するのは、署名が有効であり、かつ署名の生成以降にJARファイル内のどのファイルも変更されていない場合です。JARファイルの検証は、次の手順で行われます。
 414 .sp
 415 .RS 4
 416 .ie n \{\
 417 \h'-04' 1.\h'+01'\c
 418 .\}
 419 .el \{\
 420 .sp -1
 421 .IP "  1." 4.2
 422 .\}
 423 \fB\&.SF\fRファイルの署名を検証します。
 424 .sp
 425 検証では、各署名ブロック(\fB\&.DSA\fR)ファイルに格納された署名が、証明書(または証明書チェーン)も\fB\&.DSA\fRファイルに示される公開鍵に対応する秘密鍵を使用して生成されたことを確認します。また、署名が対応する署名(\fB\&.SF\fR)ファイルの有効な署名であることが確認され、それにより、\fB\&.SF\fRファイルが改ざんされていないことも確認されます。
 426 .RE
 427 .sp
 428 .RS 4
 429 .ie n \{\
 430 \h'-04' 2.\h'+01'\c
 431 .\}
 432 .el \{\
 433 .sp -1
 434 .IP "  2." 4.2
 435 .\}
 436 \fB\&.SF\fRファイル内の各エントリに示されるダイジェストを、マニフェスト内の対応する各セクションと突きあわせて検証します。
 437 .sp
 438 \fB\&.SF\fRファイルには、マニフェスト・ファイル全体のハッシュが格納されたヘッダーがデフォルトで含まれています。ヘッダーが存在する場合、検証では、ヘッダー内のハッシュがマニフェスト・ファイルのハッシュと一致するかどうかを確認するためにチェックできます。一致する場合、検証は次の手順に進みます。
 439 .sp
 440 一致しない場合、\fB\&.SF\fRファイル内の各ソース・ファイル情報セクションのハッシュが、マニフェスト・ファイル内の対応するセクションのハッシュと一致することを確認するために、あまり最適化されていない検証が必要になります。署名ファイルを参照してください。
 441 .sp
 442 \fB\&.SF\fRファイルのヘッダーに格納されたマニフェスト・ファイルのハッシュが、現在のマニフェスト・ファイルのハッシュに一致しない理由の1つは、署名および\fB\&.SF\fRファイルの生成後に、(\fBjar\fRツールを使用して)1つ以上のファイルがJARファイルに追加されたことです。\fBjar\fRツールを使用してファイルを追加した場合、新しいファイル用のセクションが追加されることにより、マニフェスト・ファイルは変更されますが、\fB\&.SF\fRファイルは変更されません。検証がまだ成功しているとみなされるのは、署名の生成以降にJARファイル内のどのファイルも変更されていない場合です。これが発生するのは、\fB\&.SF\fRファイルのヘッダー以外のセクションのハッシュが、マニフェスト・ファイル内の対応するセクションのハッシュと一致する場合です。
 443 .RE
 444 .sp
 445 .RS 4
 446 .ie n \{\
 447 \h'-04' 3.\h'+01'\c
 448 .\}
 449 .el \{\
 450 .sp -1
 451 .IP "  3." 4.2
 452 .\}
 453 \fB\&.SF\fRファイル内にエントリを持つJARファイル内の各ファイルを読み取ります。読取り中にファイルのダイジェストを計算し、結果をマニフェスト・セクション内のこのファイルのダイジェストと比較します。ダイジェストは同じである必要があり、そうでない場合は検証が失敗します。
 454 .sp
 455 検証プロセス中になんらかの重大な検証エラーが発生した場合、そのプロセスは停止され、セキュリティ例外がスローされます。\fBjarsigner\fRコマンドでは、例外を捕捉および表示します。
 456 .RE
 457 .PP
 458 \fB注意:\fR
 459 追加の警告(または、\fB\-strict\fRオプションを指定した場合はエラー)はすべて読む必要があります。同様に、証明が信頼できるかを決定するために、(\fB\-verbose\fRおよび\fB\-certs\fRオプションを指定して)証明書の内容も読む必要があります。
 460 .SS "1つのJARファイルを対象とする複数の署名"
 461 .PP
 462 次のように、\fBjarsigner\fRコマンドをファイルで複数回実行し、実行のたびに異なるユーザーの別名を指定することによって、1つのJARファイルに複数のユーザーの署名を付けることができます。
 463 .sp
 464 .if n \{\
 465 .RS 4
 466 .\}
 467 .nf
 468 \fBjarsigner myBundle\&.jar susan\fR
 469 \fBjarsigner myBundle\&.jar kevin\fR
 470  
 471 .fi
 472 .if n \{\
 473 .RE
 474 .\}
 475 .PP
 476 JARファイルが複数回署名されている場合、そのJARファイルには、複数の\fB\&.SF\fRファイルと\fB\&.DSA\fRファイルが含まれており、1回の署名に対して1つのペアとなります。前述の例では、出力JARファイルには、次の名前のファイルが含まれています。
 477 .sp
 478 .if n \{\
 479 .RS 4
 480 .\}
 481 .nf
 482 \fBSUSAN\&.SF\fR
 483 \fBSUSAN\&.DSA\fR
 484 \fBKEVIN\&.SF\fR
 485 \fBKEVIN\&.DSA\fR
 486 .fi
 487 .if n \{\
 488 .RE
 489 .\}
 490 .SH "オプション"
 491 .PP
 492 次の各項では、様々な\fBjarsigner\fRオプションについて説明します。次の標準に注意してください。
 493 .sp
 494 .RS 4
 495 .ie n \{\
 496 \h'-04'\(bu\h'+03'\c
 497 .\}
 498 .el \{\
 499 .sp -1
 500 .IP \(bu 2.3
 501 .\}
 502 どのオプション名にも先頭にマイナス記号(\-)が付きます。
 503 .RE
 504 .sp
 505 .RS 4
 506 .ie n \{\
 507 \h'-04'\(bu\h'+03'\c
 508 .\}
 509 .el \{\
 510 .sp -1
 511 .IP \(bu 2.3
 512 .\}
 513 オプションは任意の順序で指定できます。
 514 .RE
 515 .sp
 516 .RS 4
 517 .ie n \{\
 518 \h'-04'\(bu\h'+03'\c
 519 .\}
 520 .el \{\
 521 .sp -1
 522 .IP \(bu 2.3
 523 .\}
 524 イタリックまたは下線付きの項目(オプションの値)の実際の値は、指定する必要があります。
 525 .RE
 526 .sp
 527 .RS 4
 528 .ie n \{\
 529 \h'-04'\(bu\h'+03'\c
 530 .\}
 531 .el \{\
 532 .sp -1
 533 .IP \(bu 2.3
 534 .\}
 535 \fB\-storepass\fR、\fB\-keypass\fR、\fB\-sigfile\fR、\fB\-sigalg\fR、\fB\-digestalg\fR、\fB\-signedjar\fRおよびTSA関連のオプションを使用できるのは、JARファイルに署名する場合のみです。署名付きJARファイルを検証する場合ではありません。\fB\-keystore \fRオプションは、JARファイルの署名および検証に関連します。また、別名は、JARファイルの署名および検証時に指定します。
 536 .RE
 537 .PP
 538 \-keystore \fIurl\fR
 539 .RS 4
 540 キーストアの場所を示すURLを指定します。これにより、\fBuser\&.home\fRシステム・プロパティで決定されたユーザーのホーム・ディレクトリ内のファイル\fB\&.keystore\fRにデフォルト設定されます。
 541 .sp
 542 キーストアは署名時には必要です。デフォルトのキーストアが存在しない場合、またはデフォルト以外のキーストアを使用する場合は、キーストアを明示的に指定する必要があります。
 543 .sp
 544 検証するときはキーストアは必要ありません。ただし、キーストアが指定されているか、あるいはデフォルトのキーストアが存在していて、さらに\fB\-verbose\fRオプションも指定されていた場合、JARファイルの検証に使用される証明書がそのキーストアに1つでも含まれているかどうかに関する追加情報が出力されます。
 545 .sp
 546 \fB\-keystore\fR引数には、URLではなくファイル名とパスを指定でき、この場合、ファイル: URLと同じように処理されます。たとえば、次にように指定すると同等になります。
 547 .sp
 548 .if n \{\
 549 .RS 4
 550 .\}
 551 .nf
 552 \fB\-keystore \fR\fB\fIfilePathAndName\fR\fR
 553 \fB\-keystore file:\fR\fB\fIfilePathAndName\fR\fR
 554  
 555 .fi
 556 .if n \{\
 557 .RE
 558 .\}
 559 (JREの\fB$JAVA_HOME/lib/security directory\fRにある)
 560 \fBjava\&.security\fRセキュリティ・プロパティ・ファイル内でSun PKCS #11プロバイダが構成された場合、\fBkeytool\fRおよび\fBjarsigner\fRツールはPKCS#11トークンに基づいて動作できます。次のオプションを指定します。
 561 .sp
 562 .if n \{\
 563 .RS 4
 564 .\}
 565 .nf
 566 \fB\-keystore NONE\fR
 567 \fB\-storetype PKCS11\fR
 568  
 569 .fi
 570 .if n \{\
 571 .RE
 572 .\}
 573 たとえば、次のコマンドは、構成されたPKCS#11トークンの内容を一覧表示します。
 574 .sp
 575 .if n \{\
 576 .RS 4
 577 .\}
 578 .nf
 579 \fBkeytool \-keystore NONE \-storetype PKCS11 \-list\fR
 580  
 581 .fi
 582 .if n \{\
 583 .RE
 584 .\}
 585 .RE
 586 .PP
 587 \-storetype \fIstoretype\fR
 588 .RS 4
 589 インスタンスを生成するキーストアのタイプを指定します。デフォルトのキーストア・タイプは、セキュリティ・プロパティ・ファイル内の\fBkeystore\&.type\fRプロパティの値で指定されたタイプです。この値は、\fBjava\&.security\&.KeyStore\fRのstatic
 590 \fBgetDefaultType\fRメソッドによって返されます。
 591 .sp
 592 \fB\-storepass\fRオプションを使用して、PCKS #11トークンのPINを指定することもできます。何も指定しない場合、\fBkeytool\fRおよび\fBjarsigner\fRコマンドによって、トークンPINの指定を求められます。トークンに保護された認証パス(専用のPINパッドや生体読取り機など)がある場合、\fB\-protected\fRオプションを指定する必要がありますが、パスワード・オプションは指定できません。
 593 .RE
 594 .PP
 595 \-storepass[:env | :file] \fIargument\fR
 596 .RS 4
 597 キーストアにアクセスするのに必要なパスワードを指定します。これが必要なのは、JARファイルに署名を付けるときのみです(検証するときには不要です)。その場合、\fB\-storepass\fRオプションをコマンド行で指定しないと、パスワードの入力を求められます。
 598 .sp
 599 修飾子\fBenv\fRまたは\fBfile\fRが指定されていない場合、パスワードの値は\fIargument\fRになります。それ以外の場合、パスワードは次のようにして取得されます。
 600 .sp
 601 .RS 4
 602 .ie n \{\
 603 \h'-04'\(bu\h'+03'\c
 604 .\}
 605 .el \{\
 606 .sp -1
 607 .IP \(bu 2.3
 608 .\}
 609 \fBenv\fR:
 610 \fBargument\fRという名前の環境変数からパスワードを取得します。
 611 .RE
 612 .sp
 613 .RS 4
 614 .ie n \{\
 615 \h'-04'\(bu\h'+03'\c
 616 .\}
 617 .el \{\
 618 .sp -1
 619 .IP \(bu 2.3
 620 .\}
 621 \fBfile\fR:
 622 \fBargument\fRという名前のファイルからパスワードを取得します。
 623 .RE
 624 .sp
 625 \fB注意:\fR
 626 テストを目的とする場合またはセキュアなシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。
 627 .RE
 628 .PP
 629 \-keypass [:env | :file] \fIargument\fR
 630 .RS 4
 631 コマンド行で指定された別名に対応するキーストア・エントリの秘密鍵を保護するのに使用するパスワードを指定します。\fBjarsigner\fRを使用してJARファイルに署名を付けるときは、パスワードが必要です。コマンド行でパスワードが指定されておらず、必要なパスワードがストアのパスワードと異なる場合は、パスワードの入力を求められます。
 632 .sp
 633 修飾子\fBenv\fRまたは\fBfile\fRが指定されていない場合、パスワードの値は\fBargument\fRになります。それ以外の場合、パスワードは次のようにして取得されます。
 634 .sp
 635 .RS 4
 636 .ie n \{\
 637 \h'-04'\(bu\h'+03'\c
 638 .\}
 639 .el \{\
 640 .sp -1
 641 .IP \(bu 2.3
 642 .\}
 643 \fBenv\fR:
 644 \fBargument\fRという名前の環境変数からパスワードを取得します。
 645 .RE
 646 .sp
 647 .RS 4
 648 .ie n \{\
 649 \h'-04'\(bu\h'+03'\c
 650 .\}
 651 .el \{\
 652 .sp -1
 653 .IP \(bu 2.3
 654 .\}
 655 \fBfile\fR:
 656 \fBargument\fRという名前のファイルからパスワードを取得します。
 657 .RE
 658 .sp
 659 \fB注意:\fR
 660 テストを目的とする場合またはセキュアなシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。
 661 .RE
 662 .PP
 663 \-sigfile \fIfile\fR
 664 .RS 4
 665 生成された\fB\&.SF\fRファイルおよび\fB\&.DSA\fRファイルに使用するベース・ファイル名を指定します。たとえば、ファイルが\fBDUKESIGN\fRの場合、生成される\fB\&.SF\fRおよび\fB\&.DSA\fRファイルは、\fBDUKESIGN\&.SF\fRおよび\fBDUKESIGN\&.DSA\fRという名前で、署名付きJARファイルの\fBMETA\-INF\fRディレクトリに格納されます。
 666 .sp
 667 ファイル内の文字は、セット\fBa\-zA\-Z0\-9_\-\fRから指定される必要があります。アルファベット、数字、アンダースコアおよびハイフン文字のみを使用できます。\fB\&.SF\fRおよび\fB\&.DSA\fRのファイル名では、小文字はすべて大文字に変換されます。
 668 .sp
 669 コマンド行で\fB\-sigfile\fRオプションを指定しなかった場合、\fB\&.SF\fRファイルと\fB\&.DSA\fRファイルのベース・ファイル名は、コマンド行で指定された別名の先頭の8文字をすべて大文字に変換したものになります。別名が8文字未満の場合は、別名がそのまま使用されます。別名に、署名ファイル名で無効な文字が含まれている場合、ファイル名を作成するために、該当する文字がアンダースコア(_)文字に変換されます。
 670 .RE
 671 .PP
 672 \-sigalg \fIalgorithm\fR
 673 .RS 4
 674 JARファイルの署名に使用する署名アルゴリズムの名前を指定します。
 675 .sp
 676 標準的な署名アルゴリズム名のリストは、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppAにある
 677 Java Cryptography Architecture (JCA)リファレンス・ガイドの「付録A: 標準名」を参照してください。
 678 .sp
 679 このアルゴリズムには、JARファイルの署名に使用する秘密鍵との互換性が必要です。このオプションを指定しない場合、秘密鍵のタイプに応じて、\fBSHA1withDSA\fR、\fBSHA256withRSA\fRまたは\fBSHA256withECDSA\fRが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、\fB\-providerClass\fRオプションを使用してそのようなプロバイダをユーザーが指定する必要があります。そうでない場合、コマンドは失敗します。
 680 .RE
 681 .PP
 682 \-digestalg \fIalgorithm\fR
 683 .RS 4
 684 JARファイルのエントリをダイジェストする際に使用するメッセージ・ダイジェスト・アルゴリズムの名前を指定します。
 685 .sp
 686 標準的なメッセージ・ダイジェスト・アルゴリズム名のリストは、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppAにある
 687 Java Cryptography Architecture (JCA)リファレンス・ガイドの「付録A: 標準名」を参照してください。
 688 .sp
 689 このオプションを指定しない場合、\fBSHA256\fRが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、\fB\-providerClass\fRオプションを使用してそのようなプロバイダをユーザーが指定する必要があります。そうでない場合、コマンドは失敗します。
 690 .RE
 691 .PP
 692 \-certs
 693 .RS 4
 694 コマンド行で、\fB\-certs\fRオプションを\fB\-verify\fRおよび\fB\-verbose\fRオプションとともに指定した場合、JARファイルの各署名者の証明書情報が出力に含まれます。この情報には、署名者の公開鍵を証明する証明書(\fB\&.DSA\fRファイルに格納)のタイプの名前が含まれ、証明書がX\&.509証明書(\fBjava\&.security\&.cert\&.X509Certificate\fRのインスタンス)の場合、署名者の識別名が含まれます。
 695 .sp
 696 キーストアの確認も行われます。コマンド行でキーストアの値が指定されていない場合、デフォルトのキーストア・ファイル(ある場合)がチェックされます。署名者の公開鍵の証明書がキーストア内のエントリと一致する場合、その署名者のキーストアのエントリの別名が丸カッコ内に表示されます。
 697 .RE
 698 .PP
 699 \-certchain \fIfile\fR
 700 .RS 4
 701 コマンド行で指定した別名によって表されるキーストア・エントリの秘密鍵に関連付けられた証明書チェーンが完全ではない場合に、使用する証明書チェーンを指定します。これは、証明書チェーン全体を保持するのに十分な領域がないハードウェア・トークン上にキーストアが格納されている場合に発生します。このファイルは一連の連結されたX\&.509証明書、PKCS#7形式の単一データ・ブロックのいずれかとなり、そのエンコーディング形式はバイナリ・エンコーディング形式、Internet RFC 1421標準で規定される印刷可能エンコーディング形式(Base64エンコーディングとも呼ばれる)のいずれかになります。インターネットRFC 1421証明書符号化規格およびhttp://tools\&.ietf\&.org/html/rfc1421を参照してください。
 702 .RE
 703 .PP
 704 \-verbose
 705 .RS 4
 706 コマンド行で\fB\-verbose\fRオプションを指定した場合、冗長モードで動作し、このモードでは、\fBjarsigner\fRは、JARの署名または検証の進行状況に関する追加情報を出力します。
 707 .RE
 708 .PP
 709 \-internalsf
 710 .RS 4
 711 以前は、JARファイルの署名時に生成された\fB\&.DSA\fR
 712 (署名ブロック)ファイルに、生成された\fB\&.SF\fRファイル(署名ファイル)のエンコードされた完全なコピーが含まれていました。 この動作は変更されました。出力JARファイル全体のサイズを小さくするために、デフォルトでは\fB\&.DSA\fRファイルには\fB\&.SF\fRファイルのコピーが含まれないようになっています。コマンド行で\fB\-internalsf\fRを指定した場合、以前と同じように動作します。このオプションは、テストを行う場合に便利です。実際には、\fB\-internalsf\fRオプションは、オーバーヘッドが大きくなるため、使用しないでください。
 713 .RE
 714 .PP
 715 \-sectionsonly
 716 .RS 4
 717 コマンド行で\fB\-sectionsonly\fRオプションを指定した場合、JARファイルの署名時に生成される\fB\&.SF\fRファイル(署名ファイル)には、マニフェスト・ファイル全体のハッシュを含むヘッダーは含まれません。これに含まれるのは、JARファイル内の各ソース・ファイルに関連する情報およびハッシュのみです。署名ファイルを参照してください。
 718 .sp
 719 デフォルトでは、最適化のために、このヘッダーが追加されます。ヘッダーが存在する場合、JARファイルを検証するたびに、検証では、まずヘッダー内のハッシュがマニフェスト・ファイル全体のハッシュと一致するかどうかを確認するためにチェックできます。一致する場合、検証は次の手順に進みます。一致しない場合、\fB\&.SF\fRファイル内の各ソース・ファイル情報セクションのハッシュが、マニフェスト・ファイル内の対応するセクションのハッシュと一致するという、あまり最適化されていない検証を実行する必要があります。JARファイルの検証を参照してください。
 720 .sp
 721 \fB\-sectionsonly\fRオプションは、主にテスト用に使用されます。これを使用するとオーバーヘッドが大きくなるため、テスト用以外では使用しないでください。
 722 .RE
 723 .PP
 724 \-protected
 725 .RS 4
 726 \fBtrue\fRまたは\fBfalse\fRのいずれかの値を指定できます。専用PINリーダーなどの保護された認証パスによってパスワードを指定する必要がある場合、\fBtrue\fRを指定します。
 727 .RE
 728 .PP
 729 \-providerClass \fIprovider\-class\-name\fR
 730 .RS 4
 731 暗号化サービス・プロバイダが\fBjava\&.security\fRセキュリティ・プロパティ・ファイルに指定されていないときは、そのマスター・クラス・ファイルの名前を指定するときに使用されます。
 732 .sp
 733 \fB\-providerArg ConfigFilePath\fRオプションとともに使用し、\fBkeytool\fRおよび\fBjarsigner\fRツールは、プロバイダを動的にインストールし、トークン構成ファイルへのパスに\fIConfigFilePath\fRを使用します。次の例は、Oracle PKCS #11プロバイダがセキュリティ・プロパティ・ファイルに構成されていなかった場合に\fBPKCS #11\fRキーストアを一覧表示するコマンドを示しています。
 734 .sp
 735 .if n \{\
 736 .RS 4
 737 .\}
 738 .nf
 739 \fBjarsigner \-keystore NONE \-storetype PKCS11 \e\fR
 740 \fB          \-providerClass sun\&.security\&.pkcs11\&.SunPKCS11 \e\fR
 741 \fB          \-providerArg /mydir1/mydir2/token\&.config \e\fR
 742 \fB          \-list\fR
 743  
 744 .fi
 745 .if n \{\
 746 .RE
 747 .\}
 748 .RE
 749 .PP
 750 \-providerName \fIproviderName\fR
 751 .RS 4
 752 \fBjava\&.security\fRセキュリティ・プロパティ・ファイル内で2つ以上のプロバイダが構成された場合、\fB\-providerName\fRオプションを使用して、特定のプロバイダ・インスタンスを対象にすることができます。このオプションの引数は、プロバイダの名前です。
 753 .sp
 754 Oracle PKCS #11プロバイダの場合、\fIproviderName\fRは\fBSunPKCS11\-\fR\fITokenName\fRという形式になります。ここで、構成属性の表で詳細に説明されているように、\fITokenName\fRは、プロバイダ・インスタンスが構成された名前の接尾辞です。たとえば、次のコマンドは、名前接尾辞\fBSmartCard\fRの\fBPKCS #11\fRキーストア・プロバイダ・インスタンスの内容を一覧表示します。
 755 .sp
 756 .if n \{\
 757 .RS 4
 758 .\}
 759 .nf
 760 \fBjarsigner \-keystore NONE \-storetype PKCS11 \e\fR
 761 \fB        \-providerName SunPKCS11\-SmartCard \e\fR
 762 \fB        \-list\fR
 763  
 764 .fi
 765 .if n \{\
 766 .RE
 767 .\}
 768 .RE
 769 .PP
 770 \-J\fIjavaoption\fR
 771 .RS 4
 772 指定された\fIjavaoption\fR文字列をJavaインタプリタに直接渡します。\fBjarsigner\fRコマンドは、インタプリタに対するラッパーです。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタ・オプションを一覧表示するには、コマンド行で\fBjava \-h\fRまたは\fBjava \-X\fRと入力してください。
 773 .RE
 774 .PP
 775 \-tsa \fIurl\fR
 776 .RS 4
 777 \fB\-tsa http://example\&.tsa\&.url\fRがJARファイルの署名時にコマンド行にある場合、署名のタイムスタンプが生成されます。URL
 778 \fBhttp://example\&.tsa\&.url\fRは、Time Stamping Authority (TSA)の場所を特定し、\fB\-tsacert\fRオプションを指定して検出されたURLをオーバーライドします。\fB\-tsa\fRオプションでは、TSAの公開鍵証明書をキーストアに配置する必要はありません。
 779 .sp
 780 タイムスタンプを生成するために、\fBjarsigner\fRは、RFC 3161で定義されているタイムスタンプ・プロトコル(TSP)を使用してTSAと通信します。成功すると、TSAによって返されたタイムスタンプ・トークンは、署名ブロック・ファイルの署名とともに保存されます。
 781 .RE
 782 .PP
 783 \-tsacert \fIalias\fR
 784 .RS 4
 785 \fB\-tsacert alias\fRがJARファイルの署名時にコマンド行にある場合、署名のタイムスタンプが生成されます。別名は、キーストア内の有効なTSAの公開鍵証明書を特定します。エントリの証明書で、TSAの場所を特定するURLを含むSubject Information Access拡張機能が確認されます。
 786 .sp
 787 \fB\-tsacert\fRオプションを使用する場合は、TSAの公開鍵証明書がキーストアに配置されている必要があります。
 788 .RE
 789 .PP
 790 \-tsapolicyid \fIpolicyid\fR
 791 .RS 4
 792 TSAサーバーに送信するポリシーIDを識別するオブジェクト識別子(OID)を指定します。このオプションを指定しない場合、ポリシーIDは送信されず、TSAサーバーはデフォルトのポリシーIDを選択します。
 793 .sp
 794 オブジェクト識別子は、ITU Telecommunication Standardization Sector (ITU\-T)標準であるX\&.696によって定義されます。これらの識別子は、通常、\fB1\&.2\&.3\&.4\fRなどの、負ではない数字のピリオド区切りのセットです。
 795 .RE
 796 .PP
 797 \-altsigner \fIclass\fR
 798 .RS 4
 799 このオプションは、代替署名メカニズムを指定します。完全修飾クラス名は、\fBcom\&.sun\&.jarsigner\&.ContentSigner\fR抽象クラスを拡張するクラス・ファイルを識別します。このクラス・ファイルへのパスは、\fB\-altsignerpath\fRオプションによって定義されます。\fB\-altsigner\fRオプションを使用した場合、\fBjarsigner\fRコマンドでは、指定されたクラスによって提供される署名メカニズムを使用します。それ以外の場合、\fBjarsigner\fRコマンドはデフォルトの署名メカニズムを使用します。
 800 .sp
 801 たとえば、\fBcom\&.sun\&.sun\&.jarsigner\&.AuthSigner\fRという名前のクラスが提供する署名メカニズムを使用するには、jarsignerのオプション\fB\-altsigner com\&.sun\&.jarsigner\&.AuthSigner\fRを使用します。
 802 .RE
 803 .PP
 804 \-altsignerpath \fIclasspathlist\fR
 805 .RS 4
 806 クラス・ファイルおよびそれが依存するJARファイルへのパスを指定します。\fB\-altsigner\fRオプションを使用して、クラス・ファイル名を指定します。クラス・ファイルがJARファイル内にある場合、このオプションでは、そのJARファイルへのパスを指定します。
 807 .sp
 808 絶対パスまたは現在のディレクトリへの相対パスを指定できます。\fIclasspathlist\fRに複数のパスやJARファイルが含まれる場合、それらを、Oracle Solarisの場合はコロン(:)で、Windowsの場合はセミコロン(;)で、それぞれ区切ります。目的のクラスがすでに検索パス内にある場合は、このオプションは不要です。
 809 .sp
 810 次の例では、クラス・ファイルを含むJARファイルへのパスを指定する方法を示します。JARファイル名を含めます。
 811 .sp
 812 .if n \{\
 813 .RS 4
 814 .\}
 815 .nf
 816 \fB\-altsignerpath /home/user/lib/authsigner\&.jar\fR
 817  
 818 .fi
 819 .if n \{\
 820 .RE
 821 .\}
 822 次の例では、クラス・ファイルを含むJARファイルへのパスを指定する方法を示します。JARファイル名を省略します。
 823 .sp
 824 .if n \{\
 825 .RS 4
 826 .\}
 827 .nf
 828 \fB\-altsignerpath /home/user/classes/com/sun/tools/jarsigner/\fR
 829  
 830 .fi
 831 .if n \{\
 832 .RE
 833 .\}
 834 .RE
 835 .PP
 836 \-strict
 837 .RS 4
 838 署名または検証処理中に、コマンドにより警告メッセージが発行される場合があります。このオプションを指定すると、コマンドにより検出された重大な警告メッセージがツールの終了コードに反映されます。エラーと警告を参照してください。
 839 .RE
 840 .PP
 841 \-verbose \fIsuboptions\fR
 842 .RS 4
 843 検証処理の場合、\fB\-verbose\fRオプションには、表示する情報の量を決定するサブオプションを指定します。\fB\-certs\fRオプションも指定した場合、デフォルト・モード(またはサブオプション\fBall\fR)では、エントリが処理されるたびに各エントリが表示され、その後にJARファイルの各署名者の証明書情報も表示されます。\fB\-certs\fRおよび\fB\-verbose:grouped\fRサブオプションを指定した場合、同じ署名者情報を持つエントリが、その証明書情報とともに、グループ化されて表示されます。\fB\-certs\fRおよび\fB\-verbose:summary\fRサブオプションを指定した場合、同じ署名者情報を持つエントリが、その証明書情報とともに、グループ化されて表示されます。各エントリの詳細は、\fI1つのエントリ(以上)\fRにまとめられて表示されます。例を参照してください。
 844 .RE
 845 .SH "エラーと警告"
 846 .PP
 847 署名または検証プロセス中に、\fBjarsigner\fRコマンドで、様々なエラーまたは警告が発行される可能性があります。
 848 .PP
 849 障害がある場合、\fBjarsigner\fRコマンドはコード1で終了します。障害はないが、1つ以上の重大な警告がある場合、\fB\-strict\fRオプションが指定されて\fBいない\fR場合は、\fBjarsigner\fRコマンドはコード0で終了し、\fB\-strict\fRが指定されている場合は警告コードのOR値で終了します。情報警告のみがある、または警告がまったくない場合、コマンドは常にコード0で終了します。
 850 .PP
 851 たとえば、エントリの署名に使用される証明書が期限切れで、ファイルの署名を許可しないKeyUsage拡張機能を使用している場合、\fB\-strict\fRオプションが指定されていると、\fBjarsigner\fRコマンドはコード12 (=4+8)で終了します。
 852 .PP
 853 \fB注意:\fR
 854 Solaris、LinuxおよびOS Xでは0から255までの値のみが有効のため、終了コードは再利用されます。
 855 .PP
 856 次のセクションでは、\fBjarsigner\fRコマンドにより発行できるエラーおよび警告の名前、コード、説明を記述します。
 857 .SS "障害"
 858 .PP
 859 コマンド行解析エラー、JARファイルに署名する鍵ペアを検索できない、または署名付きJARファイルの検証失敗など(限定されません)、\fBjarsigner\fRコマンドの失敗理由。
 860 .PP
 861 failure
 862 .RS 4
 863 コード1。署名または検証が失敗します。
 864 .RE
 865 .SS "重大な警告"
 866 .PP
 867 \fB注意:\fR
 868 \fB\-strict\fRオプションを指定した場合、重大な警告はエラーとして報告されます。
 869 .PP
 870 JARファイルの署名に使用する証明書にエラーがある、または署名付きJARファイルに他の問題があるなど、\fBjarsigner\fRコマンドが重大な警告を発行する理由。
 871 .PP
 872 hasExpiredCert
 873 .RS 4
 874 コード4。このjarには、署名者証明書が期限切れのエントリが含まれています。
 875 .RE
 876 .PP
 877 notYetValidCert
 878 .RS 4
 879 コード4。このjarには、署名者証明書がまだ有効になっていないエントリが含まれています。
 880 .RE
 881 .PP
 882 chainNotValidated
 883 .RS 4
 884 コード4。このjarには、証明書チェーンが検証されていないエントリが含まれています。
 885 .RE
 886 .PP
 887 badKeyUsage
 888 .RS 4
 889 コード8。このJARには、署名者証明書のKeyUsage拡張機能がコード署名を許可しないエントリが含まれています。
 890 .RE
 891 .PP
 892 badExtendedKeyUsage
 893 .RS 4
 894 コード8。このjarには、署名者証明書のExtendedKeyUsage拡張機能がコード署名を許可しないエントリが含まれています。
 895 .RE
 896 .PP
 897 badNetscapeCertType
 898 .RS 4
 899 コード8。このjarには、署名者証明書のNetscapeCertType拡張機能がコード署名を許可しないエントリが含まれています。
 900 .RE
 901 .PP
 902 hasUnsignedEntry
 903 .RS 4
 904 コード16。このjarには、整合性チェックをしていない未署名のエントリが含まれています。
 905 .RE
 906 .PP
 907 notSignedByAlias
 908 .RS 4
 909 コード32。このjarには、指定された別名によって署名されていない署名済エントリが含まれています。
 910 .RE
 911 .PP
 912 aliasNotInStore
 913 .RS 4
 914 コード32。このjarには、このキーストア内の別名によって署名されていない署名済エントリが含まれます。
 915 .RE
 916 .SS "情報警告"
 917 .PP
 918 情報警告には、エラーではないが不適切とみなされるものが含まれます。コードはありません。
 919 .PP
 920 hasExpiringCert
 921 .RS 4
 922 このjarには、署名者証明書が6か月以内に期限切れとなるエントリが含まれています。
 923 .RE
 924 .PP
 925 noTimestamp
 926 .RS 4
 927 このjarには、タイムスタンプを含まない署名が含まれています。タイムスタンプなしでは、署名者証明書の有効期限(\fBYYYY\-MM\-DD\fR)後または将来の取消日後、ユーザーはこのJARファイルを検証できない場合があります。
 928 .RE
 929 .SH "例"
 930 .SS "JARファイルの署名"
 931 .PP
 932 次のコマンドを使用して、キーストア別名が\fBworking\fRディレクトリの\fBmystore\fRという名前のキーストアにある\fBjane\fRであるユーザーの秘密鍵でbundle\&.jarに署名し、署名付きJARファイルに\fBsbundle\&.jar\fRという名前を付けます。
 933 .sp
 934 .if n \{\
 935 .RS 4
 936 .\}
 937 .nf
 938 \fBjarsigner \-keystore /working/mystore\fR
 939 \fB    \-storepass <keystore password>\fR
 940 \fB    \-keypass <private key password>\fR
 941 \fB    \-signedjar sbundle\&.jar bundle\&.jar jane\fR
 942  
 943 .fi
 944 .if n \{\
 945 .RE
 946 .\}
 947 .PP
 948 前述のコマンドでは\fB\-sigfile\fRが指定されていないため、署名付きJARファイルに格納される生成された\fB\&.SF\fRファイルおよび\fB\&.DSA\fRファイルの名前は、別名に基づいたデフォルトの名前になります。これらは、名前付きの\fBJANE\&.SF\fRおよび\fBJANE\&.DSA\fRです。
 949 .PP
 950 ストアのパスワードおよび秘密鍵のパスワードを求められる場合、前述のコマンドを短縮して、次のことを実行できます。
 951 .sp
 952 .if n \{\
 953 .RS 4
 954 .\}
 955 .nf
 956 \fBjarsigner \-keystore /working/mystore\fR
 957 \fB    \-signedjar sbundle\&.jar bundle\&.jar jane\fR
 958  
 959 .fi
 960 .if n \{\
 961 .RE
 962 .\}
 963 .PP
 964 キーストアがデフォルトのキーストア(ホーム・ディレクトリ内の\&.keystore)である場合、次に示すように、キーストアを指定する必要がありません。
 965 .sp
 966 .if n \{\
 967 .RS 4
 968 .\}
 969 .nf
 970 \fBjarsigner \-signedjar sbundle\&.jar bundle\&.jar jane\fR
 971  
 972 .fi
 973 .if n \{\
 974 .RE
 975 .\}
 976 .PP
 977 入力JARファイル(bundle\&.jar)を署名付きJARファイルで上書きする場合、次のように\fB\-signedjar\fRオプションを指定する必要はありません。
 978 .sp
 979 .if n \{\
 980 .RS 4
 981 .\}
 982 .nf
 983 \fBjarsigner bundle\&.jar jane\fR
 984  
 985 .fi
 986 .if n \{\
 987 .RE
 988 .\}
 989 .SS "署名付きJARファイルの検証"
 990 .PP
 991 署名付きJARファイルを検証して、署名が有効でJARファイルが改ざんされなかったことを確認するには、次のようなコマンドを使用します。
 992 .sp
 993 .if n \{\
 994 .RS 4
 995 .\}
 996 .nf
 997 \fBjarsigner \-verify sbundle\&.jar\fR
 998  
 999 .fi
1000 .if n \{\
1001 .RE
1002 .\}
1003 .PP
1004 検証が成功すると、\fBjar verified\fRが表示されます。有効でない場合は、エラー・メッセージが表示されます。\fB\-verbose\fRオプションを使用すると、詳細情報を取得できます。\fBjarsigner\fRを\fB\-verbose\fRオプションとともに使用するサンプルを、次に示します。
1005 .sp
1006 .if n \{\
1007 .RS 4
1008 .\}
1009 .nf
1010 \fBjarsigner \-verify \-verbose sbundle\&.jar\fR
1011 \fB \fR
1012 \fB           198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF\fR
1013 \fB           199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF\fR
1014 \fB          1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA\fR
1015 \fB    smk   2752 Fri Sep 26 16:12:30 PDT 1997 AclEx\&.class\fR
1016 \fB    smk    849 Fri Sep 26 16:12:46 PDT 1997 test\&.class\fR
1017 \fB \fR
1018 \fB      s = signature was verified\fR
1019 \fB      m = entry is listed in manifest\fR
1020 \fB      k = at least one certificate was found in keystore\fR
1021 \fB \fR
1022 \fB    jar verified\&.\fR
1023  
1024 .fi
1025 .if n \{\
1026 .RE
1027 .\}
1028 .SS "証明書情報を使用した検証"
1029 .PP
1030 \fB\-certs\fRオプションを\fB\-verify\fRおよび\fB\-verbose\fRオプションとともに指定した場合、JARファイルの各署名者の証明書情報が出力に含まれます。この情報には、証明書タイプ、署名者の識別名情報(X\&.509証明書の場合)が含まれ、丸カッコ内には、JARファイルの公開鍵証明書がキーストア・エントリの公開鍵証明書に一致する場合の署名者のキーストア別名が含まれます。たとえば、次のようになります。
1031 .sp
1032 .if n \{\
1033 .RS 4
1034 .\}
1035 .nf
1036 \fBjarsigner \-keystore /working/mystore \-verify \-verbose \-certs myTest\&.jar\fR
1037 \fB \fR
1038 \fB           198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF\fR
1039 \fB           199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF\fR
1040 \fB          1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA\fR
1041 \fB           208 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST\&.SF\fR
1042 \fB          1087 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST\&.DSA\fR
1043 \fB    smk   2752 Fri Sep 26 16:12:30 PDT 1997 Tst\&.class\fR
1044 \fB \fR
1045 \fB      X\&.509, CN=Test Group, OU=Java Software, O=Oracle, L=CUP, S=CA, C=US (javatest)\fR
1046 \fB      X\&.509, CN=Jane Smith, OU=Java Software, O=Oracle, L=cup, S=ca, C=us (jane)\fR
1047 \fB \fR
1048 \fB      s = signature was verified\fR
1049 \fB      m = entry is listed in manifest\fR
1050 \fB      k = at least one certificate was found in keystore\fR
1051 \fB \fR
1052 \fB    jar verified\&.\fR
1053  
1054 .fi
1055 .if n \{\
1056 .RE
1057 .\}
1058 .PP
1059 署名者の証明書がX\&.509証明書ではない場合、識別名情報は表示されません。その場合には、証明書のタイプと別名のみが表示されます。たとえば、証明書がPGP証明書で、別名が\fBbob\fRである場合、\fBPGP, (bob)\fRを取得します。
1060 .SH "関連項目"
1061 .sp
1062 .RS 4
1063 .ie n \{\
1064 \h'-04'\(bu\h'+03'\c
1065 .\}
1066 .el \{\
1067 .sp -1
1068 .IP \(bu 2.3
1069 .\}
1070 jar(1)
1071 .RE
1072 .sp
1073 .RS 4
1074 .ie n \{\
1075 \h'-04'\(bu\h'+03'\c
1076 .\}
1077 .el \{\
1078 .sp -1
1079 .IP \(bu 2.3
1080 .\}
1081 keytool(1)
1082 .RE
1083 .sp
1084 .RS 4
1085 .ie n \{\
1086 \h'-04'\(bu\h'+03'\c
1087 .\}
1088 .el \{\
1089 .sp -1
1090 .IP \(bu 2.3
1091 .\}
1092 http://docs\&.oracle\&.com/javase/tutorial/security/index\&.htmlにある
1093 「コース: Java SEのセキュリティ機能」
1094 .RE
1095 .br
1096 'pl 8.5i
1097 'bp