Manpages

名 前

jarsigner − JAR 署 名 お よ び 検 証 ツ ー ル

形 式

jarsigner [ −keystore file ] [ −keystore url ]
[ −storepass storetype ] [ −storepass password ]
[ −keypass password ] [ −sigfile file ]
[ −signedjar file ] [ −verify ] [ −certs ]
[ −verbose ] [ −internalsf ] [ −sectionsonly ]
[ −providerprovider_class_name ] [ −Jflag ]
jar-file alias

機 能 説 明

jarsigner ツ ー ル は 、 次 の 2 つ の 目 的 で 使 用 し ま す 。

1.

Java ARchive (JAR) フ ァ イ ル に 署 名 を 付 け る

2.

署 名 付 き JAR フ ァ イ ル の 署 名 と 完 全 性 を 検 証 す る

JAR 機 能 を 使 う と 、 ク ラ ス フ ァ イ ル 、 イ メ ー ジ 、 サ ウ ン ド 、 お よ び そ の 他 の デ ジ タ ル デ ー タ を 単 一 の フ ァ イ ル に パ ッ ケ ー ジ 化 で き る の で 、 フ ァ イ ル を 迅 速 か つ 容 易 に 配 布 で き ま す 。 開 発 者 は 、 jar と い う 名 前 の ツ ー ル を 使 っ て JAR フ ァ イ ル を 作 成 で き ま す 。 技 術 的 な 観 点 か ら 言 え ば 、 す べ て の ZIP フ ァ イ ル も JAR フ ァ イ ル と み な す こ と が で き ま す 。

「 デ ジ タ ル 署 名 」 は 、 な ん ら か の デ ー タ (「 署 名 」 の 対 象 と な る デ ー タ ) と 、 エ ン テ ィ テ ィ (人 、 会 社 な ど ) の 非 公 開 鍵 と に 基 づ い て 計 算 さ れ る ビ ッ ト 列 で す 。 手 書 き の 署 名 同 様 、 デ ジ タ ル 署 名 に は 多 く の 利 点 が あ り ま す 。

署 名 の 生 成 に 使 わ れ た 非 公 開 鍵 と 対 に な る 公 開 鍵 を 使 っ て 計 算 を 行 う こ と で 、 デ ジ タ ル 署 名 が 本 物 か ど う か を 検 証 で き る

非 公 開 鍵 が 他 人 に 知 ら れ な い 限 り 、 デ ジ タ ル 署 名 の 偽 造 は 不 可 能 で あ る

デ ジ タ ル 署 名 は 、 そ の 署 名 が 付 い た デ ー タ だ け を 対 象 と す る も の で あ り 、 ほ か の デ ー タ の 署 名 と し て 機 能 す る こ と は な い

署 名 付 き の デ ー タ は 変 更 で き な い 。 デ ー タ が 変 更 さ れ た 場 合 は 、 そ の 署 名 に よ っ て デ ー タ が 本 物 で は な い こ と が 検 証 さ れ る

フ ァ イ ル に 対 し て エ ン テ ィ テ ィ の 署 名 を 生 成 す る に は 、 ま ず 、 そ の エ ン テ ィ テ ィ が 公 開 鍵 と 非 公 開 鍵 の ペ ア を 持 つ 必 要 が あ り ま す 。 ま た 、 公 開 鍵 を 認 証 す る 1 つ 以 上 の 証 明 書 も 必 要 で す 。 「 証 明 書 」 と は 、 あ る エ ン テ ィ テ ィ か ら の デ ジ タ ル 署 名 付 き の 文 書 の こ と で す 。 証 明 書 に は 、 ほ か の あ る エ ン テ ィ テ ィ の 公 開 鍵 が 特 別 な 値 を 持 っ て い る こ と が 書 か れ て い ま す 。

jarsigner は 、 「 キ ー ス ト ア 」 に 含 ま れ る 鍵 と 証 明 書 情 報 を 使 っ て 、 JAR フ ァ イ ル の デ ジ タ ル 署 名 を 生 成 し ま す 。 キ ー ス ト ア は 、 非 公 開 鍵 と 、 非 公 開 鍵 に 関 連 付 け ら れ た X.509 証 明 連 鎖 が 収 め ら れ た デ ー タ ベ ー ス で す 。 証 明 連 鎖 は 、 非 公 開 鍵 に 対 応 す る 公 開 鍵 を 認 証 し ま す 。 キ ー ス ト ア の 作 成 と 管 理 に は 、 keytool ユ ー テ ィ リ テ ィ を 使 い ま す 。

jarsigner は 、 エ ン テ ィ テ ィ の 非 公 開 鍵 を 使 っ て 署 名 を 生 成 し ま す 。 署 名 付 き JAR フ ァ イ ル に は 、 キ ー ス ト ア か ら の 証 明 書 の コ ピ ー が 含 ま れ て い ま す 。 こ れ は 、 JAR フ ァ イ ル の 署 名 に 使 わ れ た 非 公 開 鍵 に 対 応 す る 公 開 鍵 の 証 明 書 の コ ピ ー で す 。 jarsigner は 、 署 名 付 き JAR フ ァ イ ル の デ ジ タ ル 署 名 を 、 フ ァ イ ル 内 (の 署 名 ブ ロ ッ ク フ ァ イ ル ) に 含 ま れ て い る 証 明 書 を 使 っ て 検 証 す る こ と が で き ま す 。

現 時 点 で は 、 jarsigner で 署 名 で き る の は 、 JDK の jar ツ ー ル で 作 成 さ れ た JAR フ ァ イ ル 、 ま た は ZIP フ ァ イ ル だ け で す 。 JAR フ ァ イ ル は ZIP フ ァ イ ル と 同 じ で す が 、 JAR フ ァ イ ル に は META-INF/MANIFEST.MF フ ァ イ ル が 含 ま れ て い る 点 が 異 な り ま す 。 META-INF/MANIFEST.MF フ ァ イ ル は 、 jarsigner が ZIP フ ァ イ ル に 署 名 を 付 け る と き に 自 動 的 に 作 成 さ れ ま す 。

デ フ ォ ル ト で は 、 jarsigner は JAR フ ァ イ ル に 「 署 名 」 を 付 け ま す 。 署 名 付 き JAR フ ァ イ ル を 「 検 証 」 す る 場 合 は 、 -verify オ プ シ ョ ン を 指 定 し ま す 。

JDK 1.1 と の 互 換 性
keytool
ツ ー ル と jarsigner ツ ー ル は 、 JDK 1.1 で 提 供 さ れ て い た javakey ツ ー ル を 完 全 に 置 き 換 え る も の で す 。 こ れ ら の 新 し い ツ ー ル は javakey よ り も 多 く の 機 能 を 備 え て お り 、 キ ー ス ト ア と 非 公 開 鍵 を パ ス ワ ー ド で 保 護 す る 機 能 や 、 署 名 の 生 成 だ け で な く 署 名 を 検 証 す る 機 能 を 持 っ て い ま す 。

新 し い キ ー ス ト ア ア ー キ テ ク チ ャ は 、 javakey が 作 成 し て 管 理 し て い た ア イ デ ン テ ィ テ ィ デ ー タ ベ ー ス に 代 わ る も の で す 。 キ ー ス ト ア 形 式 と 、 JDK 1.1 の javakey が 使 っ て い た デ ー タ ベ ー ス 形 式 と の 間 に は 下 位 互 換 性 は あ り ま せ ん 。 た だ し 、 次 の よ う な こ と は 可 能 で す 。

keytool-identitydb コ マ ン ド を 使 う と 、 ア イ デ ン テ ィ テ ィ デ ー タ ベ ー ス の 情 報 を キ ー ス ト ア に イ ン ポ ー ト で き ま す 。

jarsigner は 、 以 前 に javakey を 使 っ て 署 名 さ れ た JAR フ ァ イ ル に 署 名 を 付 け る こ と が で き ま す 。

jarsigner は 、 javakey を 使 っ て 署 名 さ れ た JAR フ ァ イ ル を 検 証 で き ま す 。 し た が っ て 、 jarsigner は 、 JDK 1.2 の キ ー ス ト ア で は な く JDK 1.1 の ア イ デ ン テ ィ テ ィ デ ー タ ベ ー ス か ら の 署 名 者 別 名 を 認 識 し 、 こ れ ら を 対 象 に 処 理 を 行 う こ と が で き ま す 。

次 の 表 は 、 JDK 1.1.x で 署 名 さ れ た JAR フ ァ イ ル が 、 JDK 1.2 で ど の よ う に 扱 わ れ る か を 示 し て い ま す 。

1.1 デ ー タ
1.1 デ ー タ ベ ー ス か ら ポ リ シ ー
JAR ベ ー ス 内 の 1.2 キ ー ス フ ァ イ ル
フ ァ イ ル ア イ デ ン ト ア に イ ン が ア イ デ ン 与 え ら れ る
の タ イ プ テ ィ テ ィ ポ ー ト さ れ テ ィ テ ィ / 特 権
る 信 頼 で き 別 名 に 特 権
る ア イ デ ン を 与 え る
テ ィ テ ィ (4)

署 名 付 き す べ て の コ ー ド に
JAR × × × 与 え ら れ る
デ フ ォ ル ト の
特 権
署 名 の な い す べ て の コ ー ド に
JAR × × × 与 え ら れ る
デ フ ォ ル ト の
特 権

署 名 付 き す べ て の コ ー ド に
JAR × ○ × 与 え ら れ る
デ フ ォ ル ト の
特 権

署 名 付 き す べ て の コ ー ド に
JAR ○/信 頼 で × × 与 え ら れ る
き な い デ フ ォ ル ト の
特 権 (3)

署 名 付 き す べ て の コ ー ド に
JAR ○/信 頼 で × ○ 与 え ら れ る
き な い デ フ ォ ル ト の
特 権 (1,3)

署 名 付 き す べ て の コ ー ド に
JAR × ○ ○ 与 え ら れ る
デ フ ォ ル ト の
特 権 と ポ リ シ ー
フ ァ イ ル 内
で 与 え ら れ る
特 権
署 名 付 き す べ て の コ ー ド に
JAR ○/信 頼 ○ ○ 与 え ら れ る
で き る デ フ ォ ル ト の
特 権 と ポ リ シ ー
フ ァ イ ル 内
で 与 え ら れ る
特 権 (2)

署 名 付 き す べ て の
JAR ○/信 頼 × × 特 権
で き る
署 名 付 き す べ て の
JAR ○/信 頼 ○ × 特 権 (1)
で き る
署 名 付 き す べ て の
JAR ○/信 頼 × ○ 特 権 (1)
で き る

注 :

1.

ポ リ シ ー フ ァ イ ル 内 に ア イ デ ン テ ィ テ ィ /別 名 に つ い て の 言 及 が あ る 場 合 、 そ れ を キ ー ス ト ア に イ ン ポ ー ト し て 、 ポ リ シ ー フ ァ イ ル の 設 定 が 与 え ら れ た 特 権 に 反 映 さ れ る よ う に す る 必 要 が あ り ま す 。

2.

ポ リ シ ー フ ァ イ ル /キ ー ス ト ア の 組 み 合 わ せ は 、 ア イ デ ン テ ィ テ ィ デ ー タ ベ ー ス 内 の 信 頼 で き る ア イ デ ン テ ィ テ ィ よ り も 優 先 さ れ ま す 。

3.

JDK 1.2 で は 、 信 頼 で き な い ア イ デ ン テ ィ テ ィ は 無 視 さ れ ま す 。

4.

JDK 1.2 キ ー ス ト ア に イ ン ポ ー ト で き る の は 、 信 頼 で き る ア イ デ ン テ ィ テ ィ だ け で す 。

キ ー ス ト ア の 別 名
キ ー ス ト ア の す べ て の エ ン ト リ は 、 一 意 の 「 別 名 」 を 介 し て ア ク セ ス さ れ ま す 。

jarsigner を 使 っ て JAR フ ァ イ ル に 署 名 を 付 け る と き は 、 署 名 の 生 成 に 必 要 な 非 公 開 鍵 を 含 む キ ー ス ト ア エ ン ト リ の 別 名 を 指 定 す る 必 要 が あ り ま す 。 た と え ば 、 次 の 例 は 、 working デ ィ レ ク ト リ の mystore と い う 名 前 の キ ー ス ト ア に 含 ま れ る 別 名 duke に 関 連 付 け ら れ た 非 公 開 鍵 を 使 っ て 、 MyJARFile.jar と い う 名 前 の JAR フ ァ イ ル に 署 名 を 付 け ま す 。 出 力 フ ァ イ ル は 指 定 さ れ て い な い の で 、 MyJARFile.jar は 署 名 付 き の JAR フ ァ イ ル に よ っ て 上 書 き さ れ ま す 。

example% jarsigner -keystore /working/mystore -storepass
myspass -keypass dukekeypasswd MyJARFile.jar duke

キ ー ス ト ア は パ ス ワ ー ド で 保 護 さ れ て い る の で 、 ス ト ア の パ ス ワ ー ド (上 の 例 で は myspass ) を 指 定 す る 必 要 が あ り ま す 。 コ マ ン ド 行 で ス ト ア の パ ス ワ ー ド を 指 定 し な か っ た 場 合 は 、 パ ス ワ ー ド の 入 力 を 求 め ら れ ま す 。 同 様 に 、 非 公 開 鍵 も キ ー ス ト ア 内 で パ ス ワ ー ド に よ っ て 保 護 さ れ て い る の で 、 非 公 開 鍵 の パ ス ワ ー ド (上 の 例 で は dukekeypasswd ) を 指 定 す る 必 要 が あ り ま す 。 コ マ ン ド 行 で 非 公 開 鍵 の パ ス ワ ー ド を 指 定 し て お ら ず 、 非 公 開 鍵 の パ ス ワ ー ト が ス ト ア の パ ス ワ ー ド と 違 っ て い る 場 合 は 、 非 公 開 鍵 の パ ス ワ ー ド の 入 力 を 求 め ら れ ま す 。

キ ー ス ト ア の 場 所
jarsigner
に は 、 使 用 す る キ ー ス ト ア の 名 前 と 場 所 を 指 定 す る -keystore オ プ シ ョ ン が あ り ま す 。 キ ー ス ト ア は 、 デ フ ォ ル ト で は ユ ー ザ の ホ ー ム デ ィ レ ク ト リ の .keystore と い う 名 前 の フ ァ イ ル に 格 納 さ れ ま す 。 ユ ー ザ の ホ ー ム デ ィ レ ク ト リ は 、 user.home シ ス テ ム プ ロ パ テ ィ に よ っ て 決 ま り ま す 。

キ ー ス ト ア の 実 装
キ ー ス ト ア の 実 装 は 、 java.security パ ッ ケ ー ジ で 提 供 さ れ る KeyStore 抽 象 ク ラ ス の 固 定 実 装 で す 。 こ の ク ラ ス は キ ー ス ト ア 内 の 情 報 を ア ク セ ス お よ び 変 更 で き る よ う に 定 義 さ れ た イ ン タ フ ェ ー ス を 提 供 し ま す 。

現 在 、 キ ー ス ト ア の 実 装 を 使 用 す る も の と し て 、 keytool と jarsigner の 2 つ の コ マ ン ド 行 ツ ー ル と 、 policytool と い う 名 前 の 1 つ の GUI ベ ー ス の ツ ー ル が あ り ま す 。 KeyStore ク ラ ス は public と し て 使 用 可 能 な の で 、 JDK ユ ー ザ は KeyStore を 使 っ て ほ か の セ キ ュ リ テ ィ ア プ リ ケ ー シ ョ ン も 作 成 で き ま す 。

キ ー ス ト ア に は 、 Sun が 提 供 す る 組 み 込 み の デ フ ォ ル ト の 実 装 が あ り ま す 。 こ れ は 、 JKS と い う 名 前 の 独 自 の キ ー ス ト ア タ イ プ (形 式 ) を 利 用 す る も の で 、 キ ー ス ト ア を フ ァ イ ル と し て 実 装 し て い ま す 。 こ の 実 装 で は 、 個 々 の 非 公 開 鍵 は 個 別 の パ ス ワ ー ド に よ っ て 保 護 さ れ 、 キ ー ス ト ア 全 体 の 完 全 性 も (非 公 開 鍵 と は 別 の ) パ ス ワ ー ド に よ っ て 保 護 さ れ ま す 。

キ ー ス ト ア の 実 装 は 、 プ ロ バ イ ダ ベ ー ス で す 。 具 体 的 に は 、 KeyStore ク ラ ス が 提 供 す る ア プ リ ケ ー シ ョ ン イ ン タ フ ェ ー ス は 、 Service Provider Interface (SPI) と い う 形 で 実 装 さ れ て い ま す 。 つ ま り 、 対 応 す る KeystoreSpi 抽 象 ク ラ ス (こ れ も java.security パ ッ ケ ー ジ に 含 ま れ て い る ) が あ り 、 こ の ク ラ ス が Service Provider Interface の メ ソ ッ ド を 定 義 し て い ま す 。 こ れ ら の メ ソ ッ ド は 、 「 プ ロ バ イ ダ 」 が 実 装 し な け れ ば な り ま せ ん 。 こ こ で 、 「 プ ロ バ イ ダ 」 と は 、 Java Security API に よ っ て ア ク セ ス 可 能 な サ ー ビ ス の サ ブ セ ッ ト に 対 し 、 そ の 固 定 実 装 を 提 供 す る パ ッ ケ ー ジ ま た は パ ッ ケ ー ジ の 集 合 の こ と で す 。 し た が っ て 、 キ ー ス ト ア の 実 装 を 提 供 す る に は 、 「 Java 暗 号 化 ア ー キ テ ク チ ャ 用 プ ロ バ イ ダ の 実 装 方 法 」 の ペ ー ジ で 説 明 し て い る よ う に 、 ク ラ イ ア ン ト が プ ロ バ イ ダ を 実 装 し 、 KeystoreSpi サ ブ ク ラ ス の 実 装 を 提 供 す る 必 要 が あ り ま す 。

ア プ リ ケ ー シ ョ ン で は 、 KeyStore ク ラ ス が 提 供 す る getInstance フ ァ ク ト リ メ ソ ッ ド を 使 う こ と で 、 さ ま ざ ま な プ ロ バ イ ダ か ら 異 な る 「 タ イ プ 」 の キ ー ス ト ア の 実 装 を 選 択 で き ま す 。 キ ー ス ト ア の タ イ プ は 、 キ ー ス ト ア 情 報 の 格 納 形 式 と デ ー タ 形 式 、 お よ び キ ー ス ト ア 内 の 非 公 開 鍵 と キ ー ス ト ア 自 体 の 完 全 性 を 保 護 す る た め に 使 わ れ る ア ル ゴ リ ズ ム を 定 義 し ま す 。 異 な る タ イ プ の キ ー ス ト ア の 実 装 に は 、 互 い に 互 換 性 は あ り ま せ ん 。 keytool、 jarsigner、 お よ び policytool の 各 ツ ー ル は 、 KeyStore が 提 供 す る 共 通 の ア プ リ ケ ー シ ョ ン イ ン タ フ ェ ー ス だ け を 使 っ て い る の で 、 任 意 の タ イ プ の キ ー ス ト ア で 使 用 で き ま す 。

keytool は 、 フ ァ イ ル ベ ー ス の キ ー ス ト ア 実 装 に 対 し て 機 能 し ま す 。 keytool は 、 コ マ ン ド 行 で 渡 さ れ た キ ー ス ト ア の 位 置 を フ ァ イ ル 名 と し て 扱 い 、 FileInputStream に 変 換 し て 、 そ こ か ら キ ー ス ト ア 情 報 を ロ ー ド し ま す 。 一 方 、 jarsigner ツ ー ル お よ び policytool ツ ー ル は 、 URL を 使 っ て 指 定 す る こ と が 可 能 な 任 意 の 位 置 に あ る キ ー ス ト ア を 読 み 取 る こ と が で き ま す 。

jarsignerkeytool の 場 合 、 -storetype オ プ シ ョ ン を 使 っ て コ マ ン ド 行 で キ ー ス ト ア の タ イ プ を 指 定 で き ま す 。 policytool の 場 合 は 、 [Edit] メ ニ ュ ー の [Change Keystore] コ マ ン ド を 使 っ て キ ー ス ト ア の タ イ プ を 指 定 で き ま す 。

キ ー ス ト ア の タ イ プ を 明 示 的 に 指 定 し な い 場 合 、 keytooljarsigner 、 お よ び policytool の 各 ツ ー ル は 、 セ キ ュ リ テ ィ プ ロ パ テ ィ フ ァ イ ル 内 で 指 定 さ れ た keystore.type プ ロ パ テ ィ の 値 に 基 づ い て キ ー ス ト ア の 実 装 を 選 択 し ま す 。 セ キ ュ リ テ ィ プ ロ パ テ ィ フ ァ イ ル は 、 java.security と い う 名 前 で セ キ ュ リ テ ィ プ ロ パ テ ィ デ ィ レ ク ト リ java.home/lib/security に 置 か れ て い ま す 。 java.home は 、 JDK の 実 行 環 境 デ ィ レ ク ト リ で す 。 (SDK 内 の jre デ ィ レ ク ト リ ま た は Java 2 Runtime Environment の ト ッ プ レ ベ ル の デ ィ レ ク ト リ )。

各 ツ ー ル は 、 keystore.type の 値 を 取 得 し 、 こ の 値 で 指 定 さ れ た タ イ プ の キ ー ス ト ア を 実 装 し て い る プ ロ バ イ ダ が 見 つ か る ま で 、 現 在 イ ン ス ト ー ル さ れ て い る す べ て の プ ロ バ イ ダ を 調 べ ま す 。 目 的 の プ ロ バ イ ダ が 見 つ か る と 、 そ の プ ロ バ イ ダ か ら の キ ー ス ト ア の 実 装 を 使 い ま す 。

KeyStore ク ラ ス で は getDefaultType と い う 名 前 の static メ ソ ッ ド が 定 義 さ れ て お り 、 ア プ リ ケ ー シ ョ ン と ア プ レ ッ ト は こ の メ ソ ッ ド を 使 う こ と で keystore.type プ ロ パ テ ィ の 値 を 取 得 で き ま す 。 次 の コ ー ド は 、 デ フ ォ ル ト の キ ー ス ト ア タ イ プ ( keystore.type プ ロ パ テ ィ で 指 定 さ れ た タ イ プ ) の イ ン ス タ ン ス を 生 成 し ま す 。

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());

デ フ ォ ル ト の キ ー ス ト ア タ イ プ は jks (Sun が 提 供 す る 独 自 の タ イ プ の キ ー ス ト ア の 実 装 ) で す 。 こ れ は 、 セ キ ュ リ テ ィ プ ロ パ テ ィ フ ァ イ ル 内 の 次 の 行 に よ っ て 指 定 さ れ て い ま す 。

keystore.type=jks

各 ツ ー ル で デ フ ォ ル ト 以 外 の キ ー ス ト ア の 実 装 を 使 用 す る に は 、 上 の 行 を 変 更 し て 別 の キ ー ス ト ア の タ イ プ を 指 定 し ま す 。

た と え ば 、 pkcs12 と 呼 ば れ る タ イ プ の キ ー ス ト ア の 実 装 を 提 供 し て い る プ ロ バ イ ダ パ ッ ケ ー ジ を 使 用 す る に は 、 上 の 行 を 次 の よ う に 変 更 し ま す 。

keystore.type=pkcs12

注 : キ ー ス ト ア の タ イ プ の 指 定 で は 、 大 文 字 と 小 文 字 は 区 別 さ れ ま せ ん 。 た と え ば 、 JKS と jks は 同 じ も の と し て 扱 わ れ ま す 。

サ ポ ー ト さ れ る ア ル ゴ リ ズ ム と キ ー サ イ ズ
現 時 点 で は 、 jarsigner は 次 の ど ち ら か の ア ル ゴ リ ズ ム を 使 っ て JAR フ ァ イ ル に 署 名 を 付 け る こ と が で き ま す 。

SHA-1 ダ イ ジ ェ ス ト ア ル ゴ リ ズ ム を 使 っ た DSA (デ ジ タ ル 署 名 ア ル ゴ リ ズ ム )

MD5 ダ イ ジ ェ ス ト ア ル ゴ リ ズ ム を 使 っ た RSA ア ル ゴ リ ズ ム

具 体 的 に は 、 署 名 者 の 公 開 鍵 と 非 公 開 鍵 が DSA 鍵 で あ る 場 合 、 jarsigner は SHA-1/DSA ア ル ゴ リ ズ ム を 使 っ て JAR フ ァ イ ル に 署 名 を 付 け よ う と し ま す 。 署 名 者 の 鍵 が RSA 鍵 で あ る 場 合 、 jarsigner は MD5/RSA ア ル ゴ リ ズ ム を 使 っ て JAR フ ァ イ ル に 署 名 を 付 け ま す 。 た だ し 、 MD5/RSA ア ル ゴ リ ズ ム を 使 用 で き る の は 、 MD5/RSA ア ル ゴ リ ズ ム の 実 装 を 提 供 す る 、 静 的 に イ ン ス ト ー ル さ れ た プ ロ バ イ ダ が 存 在 す る 場 合 だ け で す 。 デ フ ォ ル ト の SUN プ ロ バ イ ダ か ら の SHA-1/DSA ア ル ゴ リ ズ ム は 常 に 使 用 で き ま す 。

署 名 付 き JAR フ ァ イ ル
jarsigner
を 使 っ て JAR フ ァ イ ル に 署 名 を 付 け た 場 合 、 出 力 さ れ る 署 名 付 き JAR フ ァ イ ル は 入 力 JAR フ ァ イ ル と 同 じ で す が 、 次 の 2 つ の 追 加 フ ァ イ ル が META-INF デ ィ レ ク ト リ に 置 か れ る 点 が 異 な り ま す 。

.SF 拡 張 子 の 付 い た 署 名 フ ァ イ ル

.DSA 拡 張 子 の 付 い た 署 名 ブ ロ ッ ク フ ァ イ ル

こ れ ら 2 つ の フ ァ イ ル の ベ ー ス フ ァ イ ル 名 は 、 -sigFile オ プ シ ョ ン の 値 か ら 作 成 さ れ ま す 。 た と え ば 、 次 の よ う に オ プ シ ョ ン を 指 定 し た と し ま す 。

-sigFile MKSIGN

こ の 場 合 、 フ ァ イ ル 名 は そ れ ぞ れ MKSIGN.SFMKSIGN.DSA に な り ま す 。

コ マ ン ド 行 に -sigfile オ プ シ ョ ン の 指 定 が な い 場 合 、 .SF フ ァ イ ル と .DSA フ ァ イ ル の ベ ー ス フ ァ イ ル 名 は 、 コ マ ン ド 行 で 指 定 さ れ た 別 名 の 先 頭 の 8 文 字 を す べ て 大 文 字 に 変 換 し た も の に な り ま す 。 別 名 が 8 文 字 未 満 の 場 合 は 、 別 名 が そ の ま ま 使 わ れ ま す 。 別 名 の 中 に 、 署 名 フ ァ イ ル 名 に 使 用 で き な い 文 字 が 含 ま れ て い る 場 合 は 、 該 当 す る 文 字 を 下 線 (_) に 置 き 換 え て フ ァ イ ル 名 が 作 成 さ れ ま す 。 使 用 で き る 文 字 は 、 ア ル フ ァ ベ ッ ト 、 数 字 、 下 線 (_)、 ハ イ フ ン で す 。

署 名 (.SF) フ ァ イ ル

署 名 フ ァ イ ル ( .SF フ ァ イ ル ) は 、 jar ツ ー ル で 生 成 さ れ た JAR フ ァ イ ル に 常 に 含 ま れ る マ ニ フ ェ ス ト フ ァ イ ル と 似 て い ま す 。 つ ま り 、 マ ニ フ ェ ス ト フ ァ イ ル 同 様 、 .SF フ ァ イ ル に は 、 JAR フ ァ イ ル に 含 ま れ て い る ソ ー ス フ ァ イ ル ご と に 、 次 の 3 つ の 行 が あ り ま す 。

フ ァ イ ル 名

使 わ れ て い る ダ イ ジ ェ ス ト ア ル ゴ リ ズ ム (SHA) の 名 前

SHA ダ イ ジ ェ ス ト の 値

マ ニ フ ェ ス ト フ ァ イ ル で は 、 SHA ダ イ ジ ェ ス ト の 値 は 、 ソ ー ス フ ァ イ ル の バ イ ナ リ デ ー タ の ダ イ ジ ェ ス ト (ハ ッ シ ュ ) で す 。 一 方 、 .SF フ ァ イ ル で は 、 ソ ー ス フ ァ イ ル の ダ イ ジ ェ ス ト の 値 は 、 マ ニ フ ェ ス ト フ ァ イ ル 中 の 該 当 す る ソ ー ス フ ァ イ ル に 対 応 す る 3 行 の ハ ッ シ ュ で す 。

署 名 フ ァ イ ル に は 、 デ フ ォ ル ト で マ ニ フ ェ ス ト フ ァ イ ル 全 体 の ハ ッ シ ュ も 含 ま れ て い ま す 。 後 述 の 「 JAR フ ァ イ ル の 検 証 」 で 説 明 す る よ う に 、 こ の ヘ ッ ダ の 存 在 に よ っ て 検 証 の 最 適 化 が 可 能 に な っ て い ま す 。

署 名 ブ ロ ッ ク (.DSA) フ ァ イ ル

.SF フ ァ イ ル に は 署 名 が 付 け ら れ 、 署 名 は .DSA フ ァ イ ル に 置 か れ ま す 。 .DSA フ ァ イ ル に は 、 キ ー ス ト ア か ら の 証 明 書 ま た は 証 明 連 鎖 も 符 号 化 さ れ た 形 で 含 ま れ て い ま す 。 証 明 書 ま た は 証 明 連 鎖 は 、 署 名 に 使 わ れ た 非 公 開 鍵 に 対 応 す る 公 開 鍵 を 認 証 し ま す 。

JAR フ ァ イ ル の 検 証
JAR フ ァ イ ル の 検 証 が 成 功 す る の は 、 署 名 が 有 効 で あ り 、 か つ 署 名 の 生 成 以 後 に JAR フ ァ イ ル 内 の ど の フ ァ イ ル も 変 更 さ れ て い な い 場 合 で す 。 JAR フ ァ イ ル の 検 証 は 、 次 の 手 順 で 行 わ れ ま す 。

1.

.SF フ ァ イ ル そ れ 自 体 の 署 名 を 検 証 し ま す 。

こ の 手 順 で は 、 各 署 名 ブ ロ ッ ク ( .DSA ) フ ァ イ ル に 格 納 さ れ て い る 署 名 が 、 実 際 に 、 公 開 鍵 に 対 応 す る 非 公 開 鍵 を 使 っ て 生 成 さ れ た も の で あ る こ と を 確 認 し ま す 。 .DSA フ ァ イ ル に は 、 公 開 鍵 の 証 明 書 も 含 ま れ て い ま す 。 ま た 、 こ の 手 順 で は 、 目 的 の 署 名 が 、 対 応 す る 署 名 ( .SF ) フ ァ イ ル 内 の 有 効 な 署 名 で あ る か ど う か を 調 べ 、 .SF フ ァ イ ル が 改 変 さ れ て い な い こ と も 確 認 し ま す 。

2.

.SF フ ァ イ ル 内 の 各 エ ン ト リ の ダ イ ジ ェ ス ト を マ ニ フ ェ ス ト 内 の 対 応 す る 各 セ ク シ ョ ン と 突 き 合 わ せ て 検 証 し ま す 。

.SF フ ァ イ ル に は 、 マ ニ フ ェ ス ト フ ァ イ ル 全 体 の ハ ッ シ ュ が 格 納 さ れ た ヘ ッ ダ が デ フ ォ ル ト で 含 ま れ て い ま す 。 こ の ヘ ッ ダ が 存 在 す る 場 合 は 、 ヘ ッ ダ 内 の ハ ッ シ ュ が 実 際 に マ ニ フ ェ ス ト フ ァ イ ル の ハ ッ シ ュ と 一 致 す る か ど う か を 検 証 す る こ と が で き ま す 。 ハ ッ シ ュ が 一 致 す る 場 合 は 、 次 の 手 順 に 進 み ま す 。

ハ ッ シ ュ が 一 致 し な い 場 合 は 、 効 率 的 に は 劣 る 方 法 を 使 っ て 検 証 を 行 い ま す 。 具 体 的 に は 、 .SF フ ァ イ ル 内 の 各 ソ ー ス フ ァ イ ル 情 報 セ ク シ ョ ン の ハ ッ シ ュ が 、 マ ニ フ ェ ス ト フ ァ イ ル 内 の 対 応 す る セ ク シ ョ ン の ハ ッ シ ュ と 一 致 す る か ど う か を 確 認 し ま す (「 署 名 (.SF) フ ァ イ ル 」 を 参 照 )。

.SF フ ァ イ ル の ヘ ッ ダ に 格 納 さ れ た マ ニ フ ェ ス ト フ ァ イ ル の ハ ッ シ ュ と 、 実 際 の マ ニ フ ェ ス ト フ ァ イ ル の ハ ッ シ ュ と が 一 致 し な い 場 合 は 、 署 名 (お よ び .SF フ ァ イ ル ) の 生 成 後 に 、 フ ァ イ ル に 1 つ 以 上 の フ ァ イ ル が 追 加 ( jar ツ ー ル を 使 用 ) さ れ た 可 能 性 が あ り ま す 。 jar ツ ー ル を 使 っ て フ ァ イ ル を 追 加 し た 場 合 、 マ ニ フ ェ ス ト フ ァ イ ル は 変 更 さ れ ま す が (新 し い フ ァ イ ル 用 の セ ク シ ョ ン が 追 加 さ れ る )、 .SF フ ァ イ ル は 変 更 さ れ ま せ ん 。 こ の 場 合 、 .SF フ ァ イ ル の ヘ ッ ダ 以 外 の セ ク シ ョ ン に 格 納 さ れ た ハ ッ シ ュ が 、 マ ニ フ ェ ス ト フ ァ イ ル 内 の 対 応 す る セ ク シ ョ ン の ハ ッ シ ュ と 一 致 す る と き は 、 署 名 の 生 成 時 に JAR フ ァ イ ル 内 に 存 在 し て い た フ ァ イ ル の う ち 、 ど の フ ァ イ ル も 変 更 さ れ て い な い こ と に な り 、 検 証 は 成 功 し た も の と し て 扱 わ れ ま す 。

3.

JAR フ ァ イ ル 内 の フ ァ イ ル の う ち 、 .SF フ ァ イ ル 内 に エ ン ト リ を 持 つ 各 フ ァ イ ル を 読 み 込 み ま す 。 読 み 込 み 中 に フ ァ イ ル の ダ イ ジ ェ ス ト を 計 算 し 、 結 果 を マ ニ フ ェ ス ト セ ク シ ョ ン 内 の 該 当 す る フ ァ イ ル の ダ イ ジ ェ ス ト と 比 較 し ま す 。 2 つ の ダ イ ジ ェ ス ト は 同 じ で な け れ ば な ら ず 、 そ う で な い 場 合 は 検 証 が 失 敗 し ま す 。

検 証 プ ロ セ ス の 途 中 で な ん ら か の 重 大 な 検 証 エ ラ ー が 発 生 し た 場 合 、 検 証 プ ロ セ ス は 中 止 さ れ 、 セ キ ュ リ テ ィ 例 外 が ス ロ ー さ れ ま す 。 ス ロ ー さ れ た セ キ ュ リ テ ィ 例 外 は 、 jarsigner が キ ャ ッ チ し て 表 示 し ま す 。

1 つ の JAR フ ァ イ ル を 対 象 と す る 複 数 の 署 名
1 つ の JAR フ ァ イ ル に 対 し て jarsigner ツ ー ル を 複 数 回 実 行 し 、 実 行 の た び に 、 異 な る ユ ー ザ の 別 名 を 指 定 す れ ば 、 JAR フ ァ イ ル に 複 数 の ユ ー ザ の 署 名 を 付 け る こ と が で き ま す 。 た と え ば 、 次 の よ う に し ま す 。

example% jarsigner myBundle.jar susan
example% jarsigner myBundle.jar kevin

JAR フ ァ イ ル が 複 数 回 署 名 さ れ て い る 場 合 、 そ の JAR フ ァ イ ル に は .SF フ ァ イ ル と .DSA フ ァ イ ル の 対 が 複 数 含 ま れ る こ と に な り ま す 。 .SF フ ァ イ ル と .DSA フ ァ イ ル の 対 は 、 1 回 の 署 名 に 対 し て 1 つ 作 成 さ れ ま す 。 し た が っ て 、 上 の 例 で 出 力 さ れ る JAR フ ァ イ ル に は 、 次 の 名 前 を 持 つ フ ァ イ ル が 含 ま れ ま す 。

SUSAN.SF
SUSAN.DSA
KEVIN.SF
KEVIN.DSA

オ プ シ ョ ン

以 下 で は 、 jarsigner の オ プ シ ョ ン に つ い て 説 明 し ま す 。 オ プ シ ョ ン を 指 定 す る と き は 、 次 の 点 に 注 意 し て く だ さ い 。

ど の オ プ シ ョ ン 名 に も 先 頭 に マ イ ナ ス 記 号 (-) が 付 く

オ プ シ ョ ン は 任 意 の 順 序 で 指 定 で き る

イ タ リ ッ ク 体 の 項 目 の 実 際 の 値 (オ プ シ ョ ン の 値 ) は 、 ユ ー ザ が 指 定 す る 必 要 が あ る

-keystore、 -storepass、 -keypass、 -sigfile お よ び -signedjar の 各 オ プ シ ョ ン を 使 用 で き る の は 、 JAR フ ァ イ ル に 署 名 を 付 け る 場 合 だ け で あ る 。 こ れ ら の オ プ シ ョ ン は 、 JAR フ ァ イ ル を 検 証 す る 場 合 に は 使 用 で き な い 。 同 様 に 、 別 名 を コ マ ン ド 行 で 指 定 す る の は 、 JAR フ ァ イ ル に 署 名 を 付 け る 場 合 だ け で あ る

-keystore file

キ ー ス ト ア (デ ー タ ベ ー ス フ ァ イ ル ) の 場 所 を 指 定 し ま す 。 こ の オ プ シ ョ ン は 、 JAR フ ァ イ ル に 署 名 を 付 け る 場 合 だ け 必 要 で す 。 JAR フ ァ イ ル を 検 証 す る 場 合 に は 必 要 あ り ま せ ん 。 こ の オ プ シ ョ ン の デ フ ォ ル ト は 、 user.home シ ス テ ム プ ロ パ テ ィ で 定 義 さ れ る ユ ー ザ の ホ ー ム デ ィ レ ク ト リ に あ る フ ァ イ ル .keystore で す 。

-keystore url

キ ー ス ト ア の 場 所 を 示 す URL を 指 定 し ま す 。 デ フ ォ ル ト は 、 ユ ー ザ の ホ ー ム デ ィ レ ク ト リ 内 の フ ァ イ ル .keystore で す 。 ユ ー ザ の ホ ー ム デ ィ レ ク ト リ は 、 user.home シ ス テ ム プ ロ パ テ ィ に よ っ て 決 ま り ま す 。

署 名 す る と き は キ ー ス ト ア が 必 要 で す 。 こ の た め 、 デ フ ォ ル ト の キ ー ス ト ア が 存 在 し な い 場 合 、 あ る い は デ フ ォ ル ト 以 外 の ほ か の キ ー ス ト ア を 使 用 す る 場 合 は 、 キ ー ス ト ア を 明 示 的 に 指 定 す る 必 要 が あ り ま す 。

検 証 す る と き は キ ー ス ト ア は 必 要 あ り ま せ ん 。 た だ し 、 キ ー ス ト ア が 指 定 さ れ て い る か 、 あ る い は デ フ ォ ル ト の キ ー ス ト ア が 存 在 し て い て 、 さ ら に -verbose オ プ シ ョ ン も 指 定 さ れ て い る 場 合 は 、 JAR フ ァ イ ル の 検 証 に 使 わ れ る 証 明 書 が キ ー ス ト ア に 存 在 す る か ど う か に つ い て の 追 加 情 報 が 出 力 さ れ ま す 。

注 : -keystore の 引 数 に は 、 URL の 代 わ り に フ ァ イ ル 名 (と パ ス ) を 指 定 で き ま す 。 フ ァ イ ル 名 (と パ ス ) を 指 定 し た 場 合 は 、 「 file:」 URL と し て 扱 わ れ ま す 。 た と え ば 、 次 の よ う に 指 定 で き ま す 。

-keystore filePathAndName

こ れ は 、 次 の 指 定 と 同 じ も の と し て 扱 わ れ ま す 。

-keystore file:filePathAndName

-storepass storetype

イ ン ス タ ン ス を 生 成 す る キ ー ス ト ア の タ イ プ を 指 定 し ま す 。 デ フ ォ ル ト の キ ー ス ト ア の タ イ プ は 、 セ キ ュ リ テ ィ プ ロ パ テ ィ フ ァ イ ル で keystore.type プ ロ パ テ ィ の 値 と し て 指 定 さ れ た タ イ プ で 、 java.security.KeyStore の static getDefaultType メ ソ ッ ド に よ っ て 返 さ れ ま す 。

-storepass password

キ ー ス ト ア に ア ク セ ス す る の に 必 要 な パ ス ワ ー ド を 指 定 し ま す 。 こ の オ プ シ ョ ン が 必 要 な の は 、 JAR フ ァ イ ル に 署 名 を 付 け る と き だ け で す (JAR フ ァ イ ル を 検 証 す る と き は 不 要 )。 署 名 を 付 け る と き に 、 コ マ ン ド 行 で -storepass オ プ シ ョ ン を 指 定 し な か っ た 場 合 は 、 パ ス ワ ー ド の 入 力 を 求 め ら れ ま す 。

注 : テ ス ト を 目 的 と す る 場 合 、 ま た は 安 全 が 保 障 さ れ た シ ス テ ム で 実 行 す る 場 合 以 外 は 、 コ マ ン ド 行 や ス ク リ プ ト で パ ス ワ ー ド を 指 定 し な い で く だ さ い 。 ま た 、 password プ ロ ン プ ト で パ ス ワ ー ド を 入 力 す る と 、 入 力 し た パ ス ワ ー ド が エ コ ー さ れ 、 そ の ま ま 画 面 に 表 示 さ れ ま す 。 こ の た め 、 周 囲 に ほ か の ユ ー ザ が い る 場 合 は 、 パ ス ワ ー ド を 見 ら れ な い よ う に 注 意 し て く だ さ い 。

-keypass password

コ マ ン ド 行 で 指 定 さ れ た 別 名 に 対 応 す る キ ー ス ト ア エ ン ト リ の 非 公 開 鍵 を 保 護 す る の に 使 う パ ス ワ ー ド を 指 定 し ま す 。 jarsigner を 使 っ て JAR フ ァ イ ル に 署 名 を 付 け る と き は 、 パ ス ワ ー ド が 必 要 で す 。 コ マ ン ド 行 で パ ス ワ ー ド が 指 定 さ れ て お ら ず 、 必 要 な パ ス ワ ー ド が ス ト ア の パ ス ワ ー ド と 異 な る 場 合 は 、 パ ス ワ ー ド の 入 力 を 求 め ら れ ま す 。

注 : テ ス ト を 目 的 と す る 場 合 、 ま た は 安 全 で あ る こ と が わ か っ て い る シ ス テ ム で 実 行 す る 場 合 以 外 は 、 コ マ ン ド 行 や ス ク リ プ ト で パ ス ワ ー ド を 指 定 し な い で く だ さ い 。 ま た 、 password プ ロ ン プ ト で パ ス ワ ー ド を 入 力 す る と 、 入 力 し た パ ス ワ ー ド が エ コ ー さ れ 、 そ の ま ま 画 面 に 表 示 さ れ ま す 。 こ の た め 、 周 囲 に ほ か の ユ ー ザ が い る 場 合 は 、 パ ス ワ ー ド を 見 ら れ な い よ う に 注 意 し て く だ さ い 。

-sigfile file

.SF フ ァ イ ル と .DSA フ ァ イ ル の 生 成 に 使 う ベ ー ス フ ァ イ ル 名 を 指 定 し ま す 。 た と え ば 、 file に DUKESIGN を 指 定 す る と 、 生 成 さ れ る .SF フ ァ イ ル と .DSA フ ァ イ ル の 名 前 は 、 そ れ ぞ れ DUKESIGN.SFDUKESIGN.DSA に な り ま す 。 こ れ ら の フ ァ イ ル は 、 署 名 付 き JAR フ ァ イ ル の META-INF デ ィ レ ク ト リ に 置 か れ ま す 。

file に 使 用 で き る 文 字 は 「 a-zA-Z0-9_-」 で す 。 つ ま り 、 文 字 、 数 字 、 下 線 、 お よ び ハ イ フ ン だ け を 使 用 で き ま す 。 注 : .SF お よ び .DSA の フ ァ イ ル 名 で は 、 小 文 字 は す べ て 大 文 字 に 変 換 さ れ ま す 。

コ マ ン ド 行 で -sigfile オ プ シ ョ ン を 指 定 し な か っ た 場 合 、 .SF フ ァ イ ル と .DSA フ ァ イ ル の ベ ー ス フ ァ イ ル 名 は 、 コ マ ン ド 行 で 指 定 さ れ た 別 名 の 先 頭 の 8 文 字 を す べ て 大 文 字 に 変 換 し た も の に な り ま す 。 別 名 が 8 文 字 未 満 の 場 合 は 、 別 名 が そ の ま ま 使 わ れ ま す 。 別 名 の 中 に 、 署 名 フ ァ イ ル 名 に 使 用 で き な い 文 字 が 含 ま れ て い る 場 合 は 、 該 当 す る 文 字 を 下 線 (_) に 置 き 換 え て フ ァ イ ル 名 が 作 成 さ れ ま す 。

-signedjar file

署 名 付 き JAR フ ァ イ ル の 名 前 を 指 定 し ま す 。

コ マ ン ド 行 で 名 前 を 指 定 し な か っ た 場 合 は 、 入 力 JAR フ ァ イ ル (署 名 の 対 象 と な る JAR フ ァ イ ル ) の 名 前 と 同 じ 名 前 が 使 わ れ ま す 。 こ の 場 合 、 入 力 JAR フ ァ イ ル は 署 名 付 き JAR フ ァ イ ル に よ っ て 上 書 き さ れ ま す 。

-verify

コ マ ン ド 行 で こ の オ プ シ ョ ン が 指 定 さ れ て い る 場 合 は 、 指 定 さ れ た JAR フ ァ イ ル が 検 証 さ れ ま す 。 JAR フ ァ イ ル へ の 署 名 は 行 わ れ ま せ ん 。 検 証 が 成 功 す る と 、 「 jar verified」 と い う メ ッ セ ー ジ が 表 示 さ れ ま す 。 署 名 さ れ て い な い JAR フ ァ イ ル 、 ま た は サ ポ ー ト さ れ て い な い ア ル ゴ リ ズ ム (RSA プ ロ バ イ ダ が イ ン ス ト ー ル さ れ て い な い 場 合 の RSA な ど ) を 使 っ て 署 名 さ れ た JAR フ ァ イ ル を 検 証 し よ う と す る と 、 「 jar is unsigned. (signatures missing or not parsable)」 と い う メ ッ セ ー ジ が 表 示 さ れ ま す 。

署 名 付 き JAR フ ァ イ ル は 、 jarsigner ま た は JDK 1.1 の javakey ツ ー ル 、 あ る い は そ の 両 方 を 使 っ て 検 証 で き ま す 。

検 証 に つ い て の 詳 細 は 、 「 JAR フ ァ イ ル の 検 証 」 を 参 照 し て く だ さ い 。

-certs

コ マ ン ド 行 で 、 -verify お よ び -verbose オ プ シ ョ ン と と も に こ の オ プ シ ョ ン が 指 定 さ れ て い る 場 合 は 、 JAR フ ァ イ ル の 各 署 名 者 の 証 明 書 情 報 も 出 力 さ れ ま す 。 証 明 書 情 報 に は 次 の も の が 含 ま れ ま す 。

署 名 者 の 公 開 鍵 を 証 明 す る ( .DSA フ ァ イ ル に 格 納 さ れ た ) 証 明 書 の 種 類 の 名 前

証 明 書 が X.509 証 明 書 (具 体 的 に は java.security.cert.X509Certificate の イ ン ス タ ン ス ) で あ る 場 合 は 、 署 名 者 の 識 別 名

キ ー ス ト ア の 確 認 も 行 わ れ ま す 。 コ マ ン ド 行 で キ ー ス ト ア の 値 が 指 定 さ れ て い な い 場 合 、 デ フ ォ ル ト の キ ー ス ト ア フ ァ イ ル が あ れ ば 、 そ れ が 確 認 さ れ ま す 。 署 名 者 の 公 開 鍵 の 証 明 書 が キ ー ス ト ア 内 の エ ン ト リ と 一 致 し た 場 合 は 、 次 の 情 報 も 表 示 さ れ ま す 。

署 名 者 に 該 当 す る キ ー ス ト ア エ ン ト リ の 別 名 。 こ の 別 名 は 括 弧 で 囲 ま れ ま す 。 た だ し 、 キ ー ス ト ア で は な く JDK 1.1 の ア イ デ ン テ ィ テ ィ デ ー タ ベ ー ス に 由 来 す る 署 名 者 の 場 合 は 、 括 弧 で は な く 角 括 弧 で 囲 ま れ ま す 。

-verbose

コ マ ン ド 行 で こ の オ プ シ ョ ン が 指 定 さ れ て い る 場 合 、 jarsigner は 「 冗 長 」 モ ー ド で 動 作 し 、 JAR の 署 名 ま た は 検 証 の 進 行 状 況 に 関 す る 追 加 情 報 を 出 力 し ま す 。

-internalsf

以 前 は 、 JAR フ ァ イ ル の 署 名 時 に 生 成 さ れ た .DSA (署 名 ブ ロ ッ ク ) フ ァ イ ル の 中 に 、 生 成 さ れ た .SF フ ァ イ ル (署 名 フ ァ イ ル ) の 完 全 な コ ピ ー が 符 号 化 さ れ た 形 で 含 ま れ て い ま し た 。 こ の 動 作 は 変 更 に な り 、 現 在 で は 、 出 力 JAR フ ァ イ ル 全 体 の サ イ ズ を 小 さ く す る た め に 、 デ フ ォ ル ト で は .SF フ ァ イ ル が .DSA フ ァ イ ル に 含 ま れ な い よ う に な っ て い ま す 。 た だ し 、 コ マ ン ド 行 で -internalsf オ プ シ ョ ン を 指 定 す る と 、 以 前 と 同 じ よ う に 動 作 し ま す 。 こ の オ プ シ ョ ン は 、 テ ス ト を 行 う 場 合 に は 便 利 で す が 、 そ れ 以 外 に は 使 用 し な い で く だ さ い 。 こ の オ プ シ ョ ン を 使 用 す る と 、 有 益 な 最 適 化 が 行 わ れ な く な り ま す 。

-sectionsonly

コ マ ン ド 行 で こ の オ プ シ ョ ン が 指 定 さ れ て い る 場 合 、 JAR フ ァ イ ル の 署 名 時 に 生 成 さ れ る .SF フ ァ イ ル (署 名 フ ァ イ ル ) に は 、 マ ニ フ ェ ス ト フ ァ イ ル 全 体 の ハ ッ シ ュ を 含 む ヘ ッ ダ は 追 加 さ れ ま せ ん 。 こ の 場 合 、 .SF フ ァ イ ル に 含 ま れ る の は 、 JAR フ ァ イ ル 内 の 各 ソ ー ス フ ァ イ ル に 関 す る 情 報 お よ び ハ ッ シ ュ だ け で す 。 詳 細 は 、 「 署 名 (.SF) フ ァ イ ル 」 を 参 照 し て く だ さ い 。

デ フ ォ ル ト で は 、 最 適 化 を 行 う た め に 、 マ ニ フ ェ ス ト フ ァ イ ル 全 体 の ハ ッ シ ュ を 含 む ヘ ッ ダ が 追 加 さ れ ま す 。 ヘ ッ ダ が 存 在 す る 場 合 は 、 JAR フ ァ イ ル の 検 証 時 に 、 ま ず ヘ ッ ダ 内 の ハ ッ シ ュ が 、 マ ニ フ ェ ス ト フ ァ イ ル 全 体 の ハ ッ シ ュ と 実 際 に 一 致 す る か ど う か が 確 認 さ れ ま す 。 ハ ッ シ ュ が 一 致 す る 場 合 、 検 証 は 次 の 手 順 に 進 み ま す 。 ハ ッ シ ュ が 一 致 し な い 場 合 は 、 効 率 的 に は 劣 る 方 法 を 使 っ て 検 証 を 行 い ま す 。 具 体 的 に は 、 .SF フ ァ イ ル 内 の 各 ソ ー ス フ ァ イ ル 情 報 セ ク シ ョ ン の ハ ッ シ ュ が 、 マ ニ フ ェ ス ト フ ァ イ ル 内 の 対 応 す る セ ク シ ョ ン の ハ ッ シ ュ と 一 致 す る か ど う か を 確 認 し ま す 。

詳 細 は 、 「 JAR フ ァ イ ル の 検 証 」 を 参 照 し て く だ さ い 。

こ の オ プ シ ョ ン は 、 テ ス ト を 行 う 場 合 に は 便 利 で す が 、 そ れ 以 外 に は 使 用 し な い で く だ さ い 。 こ の オ プ シ ョ ン を 使 用 す る と 、 有 益 な 最 適 化 が 行 わ れ な く な り ま す 。

−providerprovider_class_name

サ ー ビ ス プ ロ バ イ ダ が セ キ ュ リ テ ィ プ ロ パ テ ィ フ ァ イ ル の リ ス ト に 入 っ て い な い と き に 、 暗 号 化 サ ー ビ ス プ ロ バ イ ダ の マ ス タ ー ク ラ ス フ ァ イ ル の 名 前 を 指 定 し ま す 。

-Jflag

指 定 し た フ ラ グ を 直 接 実 行 時 シ ス テ ム に 渡 し ま す 。 jarsigner は 、 実 際 に は Java イ ン タ プ リ タ に 対 す る 「 ラ ッ パ ー 」 で す 。 こ の オ プ シ ョ ン に は 、 空 白 を 含 め る こ と は で き ま せ ん 。 こ の オ プ シ ョ ン は 、 実 行 環 境 ま た は メ モ リ 使 用 を 調 整 す る 場 合 に 便 利 で す 。 指 定 で き る フ ラ グ を 一 覧 表 示 す る に は 、 コ マ ン ド 行 で java -h ま た は java -X と 入 力 し て く だ さ い 。

使 用 例

JAR フ ァ イ ル の 署 名
bundle.jar
と い う 名 前 の JAR フ ァ イ ル が あ り 、 こ の フ ァ イ ル に 、 キ ー ス ト ア の 別 名 が jane で あ る ユ ー ザ の 非 公 開 鍵 を 使 っ て 、 署 名 を 付 け る と し ま す 。 キ ー ス ト ア は 、 mystore と い う 名 前 で working デ ィ レ ク ト リ に あ り 、 キ ー ス ト ア の パ ス ワ ー ド は mypass、 jane の 非 公 開 鍵 の パ ス ワ ー ド は j638klm と し ま す 。 こ の 場 合 、 次 の コ マ ン ド を 実 行 す る と 、 JAR フ ァ イ ル に 署 名 を 付 け て sbundle.jar と い う 署 名 付 き JAR フ ァ イ ル を 作 成 で き ま す 。

example% jarsigner -keystore "/working/mystore" -storepass myspass
-keypass j638klm -signedjar sbundle.jar bundle.jar jane

上 の コ マ ン ド で は -sigfile オ プ シ ョ ン が 指 定 さ れ て い な い の で 、 署 名 付 き JAR フ ァ イ ル に 格 納 さ れ る .SF フ ァ イ ル と .DSA フ ァ イ ル の 名 前 は 、 別 名 に 基 づ く デ フ ォ ル ト の 名 前 に な り 、 そ れ ぞ れ JANE.SFJANE.DSA に な り ま す 。

ス ト ア の パ ス ワ ー ド と 非 公 開 鍵 の パ ス ワ ー ド を あ と で 入 力 す る 場 合 は 、 上 の コ マ ン ド を 短 縮 し て 次 の よ う に 入 力 で き ま す 。

example% jarsigner -keystore /working/mystore
-signedjar sbundle.jar bundle.jar jane

デ フ ォ ル ト の キ ー ス ト ア (ホ ー ム デ ィ レ ク ト リ 内 の .keystore と い う 名 前 の キ ー ス ト ア ) を 使 用 す る 場 合 は 、 次 に 示 す よ う に 、 キ ー ス ト ア の 指 定 を 省 略 で き ま す 。

example% jarsigner -signedjar sbundle.jar bundle.jar jane

ま た 、 署 名 付 き JAR フ ァ イ ル で 入 力 JAR フ ァ イ ル (bundle.jar) を 上 書 き す る 場 合 は 、 -signedjar オ プ シ ョ ン の 指 定 も 省 略 で き ま す 。

example% jarsigner bundle.jar jane

署 名 付 き JAR フ ァ イ ル の 検 証
次 に 示 す の は 、 署 名 付 き JAR フ ァ イ ル を 検 証 し 、 署 名 が 有 効 で JAR フ ァ イ ル が 改 変 さ れ て い な い こ と を 確 認 す る た め の コ マ ン ド 例 で す 。

example% jarsigner -verify sbundle.jar

検 証 が 成 功 す る と 、 次 の よ う な メ ッ セ ー ジ が 表 示 さ れ ま す 。

jar verified.

検 証 が 成 功 し な か っ た 場 合 は 、 エ ラ ー メ ッ セ ー ジ が 表 示 さ れ ま す 。

-verbose オ プ シ ョ ン を 使 う と 、 よ り 多 く の 情 報 が 表 示 さ れ ま す 。 次 に 示 す の は 、 -verbose オ プ シ ョ ン を 指 定 し た jarsigner の 実 行 例 と そ の 出 力 結 果 で す 。

example% jarsigner -verify -verbose sbundle.jar

198 Fri Sep 26 16:14:06 PDT 1997 META-INF/MANIFEST.MF
199 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.SF
1013 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.DSA
smk 2752 Fri Sep 26 16:12:30 PDT 1997 AclEx.class
smk 849 Fri Sep 26 16:12:46 PDT 1997 test.class

s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore

jar verified.

証 明 書 情 報 を 使 っ た 検 証
検 証 時 に 、 -verify-verbose オ プ シ ョ ン に 加 え て -certs オ プ シ ョ ン を 指 定 し た 場 合 は 、 JAR フ ァ イ ル 内 の 各 署 名 者 の 証 明 書 情 報 も 出 力 さ れ ま す 。 こ れ に は 、 証 明 書 の タ イ プ 、 署 名 者 の 識 別 名 情 報 (X.509 証 明 書 の 場 合 )、 お よ び 、 JAR フ ァ イ ル の 公 開 鍵 の 証 明 書 が キ ー ス ト ア エ ン ト リ の 公 開 鍵 の 証 明 書 と 一 致 す る 場 合 に は 、 括 弧 で 囲 ま れ た 署 名 者 の キ ー ス ト ア 別 名 が 含 ま れ ま す 。 た と え ば 、 次 の よ う に 出 力 さ れ ま す 。

example% jarsigner -keystore /working/mystore -verify -verbose -certs myTest.jar

198 Fri Sep 26 16:14:06 PDT 1997 META-INF/MANIFEST.MF
199 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.SF
1013 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.DSA
208 Fri Sep 26 16:23:30 PDT 1997 META-INF/JAVATEST.SF
1087 Fri Sep 26 16:23:30 PDT 1997 META-INF/JAVATEST.DSA
smk 2752 Fri Sep 26 16:12:30 PDT 1997 Tst.class

X.509, CN=Test Group, OU=Java Software, O=Sun Microsystems, L=CUP, S=CA, C=US (javatest)
X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane)

s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore

jar verified.

署 名 者 の 証 明 書 が X.509 証 明 書 で な い 場 合 は 、 識 別 名 情 報 は 表 示 さ れ ず 、 証 明 書 の タ イ プ と 別 名 だ け が 表 示 さ れ ま す 。 た と え ば 、 証 明 書 が PGP 証 明 書 で 、 別 名 が bob の 場 合 は 、 次 の よ う に 表 示 さ れ ま す 。

PGP, (bob)

JAR フ ァ イ ル の 検 証
次 の 検 証 の 例 で は 、 ア イ デ ン テ ィ テ ィ デ ー タ ベ ー ス の 署 名 者 を 含 む JAR フ ァ イ ル の 検 証 を 行 い ま す 。

JAR フ ァ イ ル が 、 JDK 1.1 の javakey ツ ー ル を 使 っ て 署 名 さ れ て い る 場 合 、 署 名 者 は ア イ デ ン テ ィ テ ィ デ ー タ ベ ー ス 内 の 別 名 で す 。 こ の 場 合 、 検 証 の 出 力 に は i と い う 記 号 が 含 ま れ ま す 。 JAR フ ァ イ ル が 、 ア イ デ ン テ ィ テ ィ デ ー タ ベ ー ス 内 の 別 名 と キ ー ス ト ア 内 の 別 名 の 両 方 に よ っ て 署 名 さ れ て い る 場 合 は 、 k と i の 両 方 が 表 示 さ れ ま す 。

-certs オ プ シ ョ ン を 指 定 し た 場 合 、 キ ー ス ト ア の 別 名 は 括 弧 で 囲 ま れ る の に 対 し 、 ア イ デ ン テ ィ テ ィ デ ー タ ベ ー ス 内 の 別 名 は 角 括 弧 で 囲 ま れ て 表 示 さ れ ま す 。 た と え ば 、 次 の よ う に 表 示 さ れ ま す 。

example% jarsigner -keystore /working/mystore -verify -verbose -certs writeFile.jar

198 Fri Sep 26 16:14:06 PDT 1997 META-INF/MANIFEST.MF
199 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.SF
1013 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.DSA
199 Fri Sep 27 12:22:30 PDT 1997 META-INF/DUKE.SF
1013 Fri Sep 27 12:22:30 PDT 1997 META-INF/DUKE.DSA
smki 2752 Fri Sep 26 16:12:30 PDT 1997 writeFile.html

X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane)
X.509, CN=Duke, OU=Java Software, O=Sun, L=cup, S=ca, C=us [duke]

s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope

jar verified.

別 名 duke は 角 括 弧 で 囲 ま れ て い る の で 、 こ の 別 名 は キ ー ス ト ア の 別 名 で は な く 、 ア イ デ ン テ ィ テ ィ デ ー タ ベ ー ス の 別 名 で す 。

関 連 項 目

jar(1)keytool(1)