• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jarsigner 署名確認について)

jarsigner署名確認エラーとは?解決策を教えてください

このQ&Aのポイント
  • APKファイルの署名確認についてjarsignerコマンドを使用している際に、invalid SHA1 signature file digestエラーが表示されることがあります。このエラーは、main.xmlの内容が署名後に変更された場合に発生するものです。しかし、実際にはAPKファイルの内容を変更していないにもかかわらずエラーが表示されるなど、原因がわかりません。
  • 通常、main.xmlの内容が変更された場合、META-INF/TECHKEY.SFとres/layout/main.xmlのタイムスタンプを比較すると、main.xmlの方が新しくなります。しかし、実際にはmain.xmlの方が古いままであり、なぜエラーが表示されるのか疑問です。
  • このエラーの解決策は現在見つかっておらず、困っています。何かご存知の方がいらっしゃいましたら、教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • teketon
  • ベストアンサー率65% (141/215)
回答No.2

とりあえず、SHA1のオプションがポイントみたいです > -digestalg SHA1 Javaのバージョンは、下記のコマンドで表示されます。 > java -version

rainman1966
質問者

お礼

何度も回答頂き本当にありがとうございます 本当に嬉しいです jarsigner -keystore 証明書名 -digestalg SHA1 アプリ名 証明書別名 を実行してみるとパスワードを要求されましたが入力しても そのあと何も表示されませんでした 試しに jarsigner -verify -verbose -certs アプリ名.apk で署名確認するとやはり jarsigner:java.lang.SecurityException: invalid SHA1 signature file digest for n ・・・es/layout/main.xml と表示されました… java -version でバージョンを確認すると java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b16) Java HotSpot(TM) Client VM (build 23.25-b01, mixed mode, sharing) と表示されました これは当方がダウンロードしたJDKのバージョンと一致しています ここからダウンロードしました       ↓ http://www.searchman.info/java_eclipse/1010.html このJAVAに問題があるのでしょうか? 「署名した環境と検証する環境でJavaのバージョンが違う場合」 というのがどういう風に確認するのかがわからないのです 本当に初心者ですみません お忙しい中お時間を頂いて本当に感謝しています もし当方の問題点がおわかりになればお教え下さい 本当にありがとうございました

rainman1966
質問者

補足

teketon様 あれから当方でも色々勉強させて頂き、 jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore 証明書名.keystore -verbose アプリ名.apk 証明書別名 で署名をつけるとあの忌々しいメッセージは表示されなくなり 「jarが検証されました」といううれしいメッセージが表示されるようになりました しかしなぜか二重署名になってしまい、やはりGooglePlayにアプリを 登録する事はできませんでした jarsigner -verify -verbose -certs アプリ名.apk で確認すると 当方がつけた署名以外に X.509, CN=Android Debug, O=Android, C=US [証明書は 11/12/20 23:53 に失効します] という署名がついて複数署名になっています また、 [CertPathが検証されていません: Path does not chain with any of the trust a ors] というエラーが署名の箇所に表示され文末には このjarには、証明書チェーンがまだ検証されていないエントリが含まれています と表示されています なぜこのようなエラーが出るのか、複数署名になるのを防ぐ事はできるのか もしおわかりになりましたらご指導下さい 何卒よろしくお願い申し上げます

その他の回答 (1)

  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

署名の仕方が間違っているんじゃないかなあ。 >jarsigner -keystore mykeystore -digestalg SHA1 jarfile alias あと、署名した環境と検証する環境でJavaのバージョンが違う場合もあやしそう。

参考URL:
http://stackoverflow.com/questions/8176166/invalid-sha1-signature-file-digest
rainman1966
質問者

お礼

teketon様 お忙しい中回答頂き誠にありがとうございます なるほど、別の署名の仕方があるんですね 当方は jarsigner -verbose -keystore c:\証明書のあるディレクトリ\証明書名.keystore c:\ファイルのあるディレクトリ\アプリ名.apk 証明書別名 で署名をしていました 頂いた回答を元に勉強してみます JAVAのバージョンが原因の場合もあるんですね そちらも勉強してみます しかし何しろ初心者で英語もわからないものですからできるかどうか…(;´д` ) 出勤前で時間がないので取り急ぎお礼だけさせて頂きました 八方ふさがりの状態ですので少しでもヒントをいただけるのは 本当にありがたいです もしお時間があれば初心者にもわかるようにもう少し詳しくお教え頂けますでしょうか? ・各環境のJAVAバージョンの確認の仕方 ・jarsigner -keystore mykeystore -digestalg SHA1 jarfile alias はjarsigner -keystore 証明書名 -digestalg SHA1 アプリ名 証明書別名 でよいのでしょうか? 取り急ぎお礼させて頂きます 本当にありがとうございました

関連するQ&A