名 前
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) フ ァ イ ル に 署 名 を 付 け る 署 名 付 き 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
と の 互 換 性
次 の 表 は 、 JDK 1.1.x で 署 名 さ れ た JAR フ ァ イ ル が 、 JDK 1.2 で ど の よ う に 扱 わ れ る か を 示 し て い ま す 。 1.1 デ
ー タ
JAR × × ×
与 え ら れ る デ
フ ォ ル ト の 特
権 署 名 付 き す
べ て の コ ー ド
に
JAR ○/信
頼 ○ ○ 与 え ら れ
る で き る デ フ
ォ ル ト の 特 権
と ポ リ シ ー フ
ァ イ ル 内 で 与
え ら れ る 特 権
合 、 そ れ を キ ー ス ト ア に イ ン ポ ー ト し て 、 ポ リ シ ー フ ァ イ ル の 設 定 が 与 え ら れ た 特 権 に 反 映 さ れ る よ う に す る 必 要 が あ り ま す 。
ベ ー ス 内 の 信 頼 で き る ア イ デ ン テ ィ テ ィ よ り も 優 先 さ れ ま す 。
キ ー ス ト ア の 別 名 キ ー ス ト ア の す べ て の エ ン ト リ は 、 一 意 の 「 別 名 」 を 介 し て ア ク セ ス さ れ ま す 。 jarsigner を 使 っ て JAR フ ァ イ ル に 署 名 を 付 け る と き は 、 署 名 の 生 成 に 必 要 な 非 公 開 鍵 を 含 む キ ー ス ト ア エ ン ト リ の 別 名 を 指 定 す る 必 要 が あ り ま す 。 た と え ば 、 次 の 例 は 、 working デ ィ レ ク ト リ の mystore と い う 名 前 の キ ー ス ト ア に 含 ま れ る 別 名 duke に 関 連 付 け ら れ た 非 公 開 鍵 を 使 っ て 、 MyJARFile.jar と い う 名 前 の JAR フ ァ イ ル に 署 名 を 付 け ま す 。 出 力 フ ァ イ ル は 指 定 さ れ て い な い の で 、 MyJARFile.jar は 署 名 付 き の JAR フ ァ イ ル に よ っ て 上 書 き さ れ ま す 。 example%
jarsigner -keystore /working/mystore -storepass keytool は 、 フ ァ イ ル ベ ー ス の キ ー ス ト ア 実 装 に 対 し て 機 能 し ま す 。 keytool は 、 コ マ ン ド 行 で 渡 さ れ た キ ー ス ト ア の 位 置 を フ ァ イ ル 名 と し て 扱 い 、 FileInputStream に 変 換 し て 、 そ こ か ら キ ー ス ト ア 情 報 を ロ ー ド し ま す 。 一 方 、 jarsigner ツ ー ル お よ び policytool ツ ー ル は 、 URL を 使 っ て 指 定 す る こ と が 可 能 な 任 意 の 位 置 に あ る キ ー ス ト ア を 読 み 取 る こ と が で き ま す 。 jarsigner と keytool の 場 合 、 -storetype オ プ シ ョ ン を 使 っ て コ マ ン ド 行 で キ ー ス ト ア の タ イ プ を 指 定 で き ま す 。 policytool の 場 合 は 、 [Edit] メ ニ ュ ー の [Change Keystore] コ マ ン ド を 使 っ て キ ー ス ト ア の タ イ プ を 指 定 で き ま す 。 キ ー ス ト ア の タ イ プ を 明 示 的 に 指 定 し な い 場 合 、 keytool 、 jarsigner 、 お よ び 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 フ ァ イ ル に 署 名 を 付 け る こ と が で き ま す 。
具 体 的 に は 、 署 名 者 の 公 開 鍵 と 非 公 開 鍵 が 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 デ ィ レ ク ト リ に 置 か れ る 点 が 異 な り ま す 。
こ れ ら 2 つ の フ ァ イ ル の ベ ー ス フ ァ イ ル 名 は 、 -sigFile オ プ シ ョ ン の 値 か ら 作 成 さ れ ま す 。 た と え ば 、 次 の よ う に オ プ シ ョ ン を 指 定 し た と し ま す 。 -sigFile MKSIGN こ の 場 合 、 フ ァ イ ル 名 は そ れ ぞ れ MKSIGN.SF と MKSIGN.DSA に な り ま す 。 コ マ ン ド 行 に -sigfile オ プ シ ョ ン の 指 定 が な い 場 合 、 .SF フ ァ イ ル と .DSA フ ァ イ ル の ベ ー ス フ ァ イ ル 名 は 、 コ マ ン ド 行 で 指 定 さ れ た 別 名 の 先 頭 の 8 文 字 を す べ て 大 文 字 に 変 換 し た も の に な り ま す 。 別 名 が 8 文 字 未 満 の 場 合 は 、 別 名 が そ の ま ま 使 わ れ ま す 。 別 名 の 中 に 、 署 名 フ ァ イ ル 名 に 使 用 で き な い 文 字 が 含 ま れ て い る 場 合 は 、 該 当 す る 文 字 を 下 線 (_) に 置 き 換 え て フ ァ イ ル 名 が 作 成 さ れ ま す 。 使 用 で き る 文 字 は 、 ア ル フ ァ ベ ッ ト 、 数 字 、 下 線 (_)、 ハ イ フ ン で す 。 署 名 (.SF) フ ァ イ ル 署 名 フ ァ イ ル ( .SF フ ァ イ ル ) は 、 jar ツ ー ル で 生 成 さ れ た JAR フ ァ イ ル に 常 に 含 ま れ る マ ニ フ ェ ス ト フ ァ イ ル と 似 て い ま す 。 つ ま り 、 マ ニ フ ェ ス ト フ ァ イ ル 同 様 、 .SF フ ァ イ ル に は 、 JAR フ ァ イ ル に 含 ま れ て い る ソ ー ス フ ァ イ ル ご と に 、 次 の 3 つ の 行 が あ り ま す 。
SHA ダ イ ジ ェ ス ト の 値 マ ニ フ ェ ス ト フ ァ イ ル で は 、 SHA ダ イ ジ ェ ス ト の 値 は 、 ソ ー ス フ ァ イ ル の バ イ ナ リ デ ー タ の ダ イ ジ ェ ス ト (ハ ッ シ ュ ) で す 。 一 方 、 .SF フ ァ イ ル で は 、 ソ ー ス フ ァ イ ル の ダ イ ジ ェ ス ト の 値 は 、 マ ニ フ ェ ス ト フ ァ イ ル 中 の 該 当 す る ソ ー ス フ ァ イ ル に 対 応 す る 3 行 の ハ ッ シ ュ で す 。 署 名 フ ァ イ ル に は 、 デ フ ォ ル ト で マ ニ フ ェ ス ト フ ァ イ ル 全 体 の ハ ッ シ ュ も 含 ま れ て い ま す 。 後 述 の 「 JAR フ ァ イ ル の 検 証 」 で 説 明 す る よ う に 、 こ の ヘ ッ ダ の 存 在 に よ っ て 検 証 の 最 適 化 が 可 能 に な っ て い ま す 。 署 名 ブ ロ ッ ク (.DSA) フ ァ イ ル .SF フ ァ イ ル に は 署 名 が 付 け ら れ 、 署 名 は .DSA フ ァ イ ル に 置 か れ ま す 。 .DSA フ ァ イ ル に は 、 キ ー ス ト ア か ら の 証 明 書 ま た は 証 明 連 鎖 も 符 号 化 さ れ た 形 で 含 ま れ て い ま す 。 証 明 書 ま た は 証 明 連 鎖 は 、 署 名 に 使 わ れ た 非 公 開 鍵 に 対 応 す る 公 開 鍵 を 認 証 し ま す 。 JAR フ
ァ イ ル の 検 証
.SF フ ァ イ ル に は 、 マ ニ フ ェ ス ト フ ァ イ ル 全 体 の ハ ッ シ ュ が 格 納 さ れ た ヘ ッ ダ が デ フ ォ ル ト で 含 ま れ て い ま す 。 こ の ヘ ッ ダ が 存 在 す る 場 合 は 、 ヘ ッ ダ 内 の ハ ッ シ ュ が 実 際 に マ ニ フ ェ ス ト フ ァ イ ル の ハ ッ シ ュ と 一 致 す る か ど う か を 検 証 す る こ と が で き ま す 。 ハ ッ シ ュ が 一 致 す る 場 合 は 、 次 の 手 順 に 進 み ま す 。 ハ ッ シ ュ が 一 致 し な い 場 合 は 、 効 率 的 に は 劣 る 方 法 を 使 っ て 検 証 を 行 い ま す 。 具 体 的 に は 、 .SF フ ァ イ ル 内 の 各 ソ ー ス フ ァ イ ル 情 報 セ ク シ ョ ン の ハ ッ シ ュ が 、 マ ニ フ ェ ス ト フ ァ イ ル 内 の 対 応 す る セ ク シ ョ ン の ハ ッ シ ュ と 一 致 す る か ど う か を 確 認 し ま す (「 署 名 (.SF) フ ァ イ ル 」 を 参 照 )。 .SF フ ァ イ ル の ヘ ッ ダ に 格 納 さ れ た マ ニ フ ェ ス ト フ ァ イ ル の ハ ッ シ ュ と 、 実 際 の マ ニ フ ェ ス ト フ ァ イ ル の ハ ッ シ ュ と が 一 致 し な い 場 合 は 、 署 名 (お よ び .SF フ ァ イ ル ) の 生 成 後 に 、 フ ァ イ ル に 1 つ 以 上 の フ ァ イ ル が 追 加 ( jar ツ ー ル を 使 用 ) さ れ た 可 能 性 が あ り ま す 。 jar ツ ー ル を 使 っ て フ ァ イ ル を 追 加 し た 場 合 、 マ ニ フ ェ ス ト フ ァ イ ル は 変 更 さ れ ま す が (新 し い フ ァ イ ル 用 の セ ク シ ョ ン が 追 加 さ れ る )、 .SF フ ァ イ ル は 変 更 さ れ ま せ ん 。 こ の 場 合 、 .SF フ ァ イ ル の ヘ ッ ダ 以 外 の セ ク シ ョ ン に 格 納 さ れ た ハ ッ シ ュ が 、 マ ニ フ ェ ス ト フ ァ イ ル 内 の 対 応 す る セ ク シ ョ ン の ハ ッ シ ュ と 一 致 す る と き は 、 署 名 の 生 成 時 に JAR フ ァ イ ル 内 に 存 在 し て い た フ ァ イ ル の う ち 、 ど の フ ァ イ ル も 変 更 さ れ て い な い こ と に な り 、 検 証 は 成 功 し た も の と し て 扱 わ れ ま す 。
検 証 プ ロ セ ス の 途 中 で な ん ら か の 重 大 な 検 証 エ ラ ー が 発 生 し た 場 合 、 検 証 プ ロ セ ス は 中 止 さ れ 、 セ キ ュ リ テ ィ 例 外 が ス ロ ー さ れ ま す 。 ス ロ ー さ れ た セ キ ュ リ テ ィ 例 外 は 、 jarsigner が キ ャ ッ チ し て 表 示 し ま す 。 1 つ
の JAR フ ァ イ ル を
対 象 と す る 複
数 の 署 名 example%
jarsigner myBundle.jar susan JAR フ ァ イ ル が 複 数 回 署 名 さ れ て い る 場 合 、 そ の JAR フ ァ イ ル に は .SF フ ァ イ ル と .DSA フ ァ イ ル の 対 が 複 数 含 ま れ る こ と に な り ま す 。 .SF フ ァ イ ル と .DSA フ ァ イ ル の 対 は 、 1 回 の 署 名 に 対 し て 1 つ 作 成 さ れ ま す 。 し た が っ て 、 上 の 例 で 出 力 さ れ る JAR フ ァ イ ル に は 、 次 の 名 前 を 持 つ フ ァ イ ル が 含 ま れ ま す 。 SUSAN.SF
オ プ シ ョ ン以 下 で は 、 jarsigner の オ プ シ ョ ン に つ い て 説 明 し ま す 。 オ プ シ ョ ン を 指 定 す る と き は 、 次 の 点 に 注 意 し て く だ さ い 。
(オ プ シ ョ ン の 値 ) は 、 ユ ー ザ が 指 定 す る 必 要 が あ る
|