ここから本文です

APKファイルに署名をつけると複数署名になります

onlyonebook10さん

2013/7/716:44:55

APKファイルに署名をつけると複数署名になります

APKファイルに署名をつけるためにkeytoolで

jarsigner -verbose -keystore c:\ディレクトリ\証明書名.keystore c:\ディレクトリ\アプリ名.apk o証明書別名



jarsigner -keystore 証明書名.keystore -digestalg SHA1 アプリ名.apk 証明書別名

jarsigner -verbose -keystore 証明書名.keystore -storepass パスワード1 -keypass パスワード2 -signedjar アプリ名.apk aアプリ名2.apk 証明書別名

を実行したら

jarsigner:java.lang.SecurityException: invalid SHA1 signature file digest for n ・・・es/layout/main.xml

というエラーが出てうまく署名できませんでした


そこで

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/11/02 3:15から41/10/25 3:15まで有効です]


という署名がついて複数署名になっています

また、

[CertPathが検証されていません: Path does not chain with any of the trust a
ors]

というエラーが署名の箇所に表示され文末には

このjarには、証明書チェーンがまだ検証されていないエントリが含まれています

と表示されています

なぜこのようなエラーが出るのか、複数署名になるのを防ぐ事はできるのか

もしおわかりになりましたらご指導下さい

お忙しい中ご面倒をおかけ致しますが何卒よろしくお願い申し上げます

補足すごく有意義な回答を頂き本当にありがとうございます!早速試してみたいのですが「ZIPコマンドを実行」というのはどうすればよいのでしょうか?圧縮などで使われるZIpの事でしょうか?コマンドに入力しても「操作可能なパッチファイルとして認識されていません」と出るのですがどこかからダウンロードするのでしょうか?重ね重ねすみませんがご指導下さい。よろしくお願い申し上げます

閲覧数:
2,584
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

nettafuriさん

編集あり2013/7/1222:52:19

http://qiita.com/mazgi/items/120641b97d0310b56abc
はどうですか?

★補足を受けて★
参考にあげた「zip」「unzip」コマンドはMac、あるいはLinuxのものだったようです。
http://neo-shocker.com/code/2012/01/macos-x-terminal-zip-archive.ht...
http://www1.ocn.ne.jp/~ruby11/linux/zip.html


そこでWindowsの手順を考えました。

「アプリ名.apk」→「アプリ名.zip」のように
ファイル拡張子の「.apk」の部分を「.zip」に修正し、ファイルを改名します。

改名したファイルを解凍します。
https://www.dryout.co.jp/support/index.php?_m=knowledgebase&_a=view...


解凍した「アプリ名」フォルダ配下に
「META-INF」フォルダ
「res」フォルダ
「AndroidManifest.xml」ファイル
「classes.dex」ファイル
「resources.arsc」ファイル
が展開されます。

「META-INF」フォルダの中には
「MANIFEST.MF」ファイル
「CERT.SF」ファイル
「CERT.RSA」ファイル
があります。

「META-INF」フォルダを、フォルダごと削除します。

これが
先に挙げたMacのターミナルでの

$ zip -d app.apk.debug_signed 'META-INF/*'
deleting: META-INF/MANIFEST.MF
deleting: META-INF/CERT.SF
deleting: META-INF/CERT.RSA

の部分に相当します。

「META-INF」フォルダを削除したら、残りの
「res」フォルダ
「AndroidManifest.xml」ファイル
「classes.dex」ファイル
「resources.arsc」ファイル
を選択して
圧縮処理をします。
http://faq.epsondirect.co.jp/faq/edc/app/servlet/relatedqa?QID=0108...

「resources.zip」ファイルができます。

「resources.zip」→「アプリ名.apk」のように
ファイルを改名します。

これで未署名になったと思いますがどうでしょうか?

質問した人からのコメント

2013/7/13 15:42:33

ありがとうございます!当方のようなド素人にも非常に分かりやすい説明を頂きおかげさまで無事に解決いたしました。ここまでたどりつくまでに何回も知恵袋で質問を繰り返したため、保有コインが少なくなってしまい少しのお礼コインしか差し上げられなくて申し訳ございません…本当にありがとうございました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。