|
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 |