SysTecevo

Google Playの署名鍵とアップロード鍵の違いは?紛失・wrong keyエラーの対処まで解説

初回掲載日:
最終更新日:

Google Playの署名鍵とアップロード鍵、AAB、ユーザー端末の関係を示すオリジナル図解

結論:Google Playのapp signing key(アプリ署名鍵)とupload key(アップロード鍵)は別の役割を持ちます。

  • 開発者はupload keyでAABを署名してPlay Consoleへアップロード
  • Google Playはupload certificateで確認し、app signing keyで配信用APKを署名
  • Play App Signing利用中にupload keyを失った場合は、upload key resetを確認
  • Play App Signingを使わずapp signing keyを失った場合は、既存アプリを更新できなくなる可能性がある

この記事では秘密鍵・パスワード・実在のkeystoreを掲載しません。コマンド例のパスやaliasはすべて例示です。

Play App Signingとは?

Play App Signingは、Google Playがアプリの署名鍵を管理・保護し、ユーザーへ配信するAPKを署名する仕組みです。Android App Bundle(AAB)を公開する場合、開発者はAABをupload keyで署名してアップロードし、その後の配信側の署名をGoogle Playに任せます。

Google公式の説明では、Play App Signingを使うとapp signing keyとupload keyを分けられます。鍵を分離することで、開発者側のupload keyを紛失・侵害したときにresetを申請しやすくなります。なお、Play App Signingの設定後、Googleが管理するapp signing keyのコピーを開発者が取得することはできません。

app signing key・upload key・keystore・certificateの違い

まずは「鍵」と「鍵を入れるファイル」と「公開情報」を分けて考えると、wrong keyエラーの原因を追いやすくなります。

用語何に使う?誰が保持する?紛失時の考え方
app signing keyユーザー端末へ配信するAPKを署名する秘密鍵Play App Signing利用時はGoogle Playが管理Play App Signing利用時は通常のupload key紛失とは別。非利用時の紛失は更新不能につながる
upload keyPlay Consoleへ送るAABやAPKを署名する秘密鍵開発者が管理Play App Signing利用時は新しい鍵を作り、upload key resetを確認できる
keystore秘密鍵と証明書を格納するバイナリファイル開発者または鍵管理サービス.jksや.keystore自体を失うと、含まれる鍵を使えなくなる
certificate公開鍵と所有者情報などを含む公開側の情報共有可能な公開情報private keyではない。SHA-1 / SHA-256 fingerprint確認に使う

Java Keystore(`.jks` / `.keystore`)は、複数のkey aliasを格納できる入れ物です。したがって「keystore=app signing key」とは限りません。実際に使う鍵は、keystore pathだけでなくaliasやsigning configurationとセットで確認します。

AABをアップロードしてユーザーへ配信する流れ

Play App Signing利用時の基本フローは、開発者がアップロード用に署名し、Google Playが配信用に再署名する二段階です。

開発者がupload keyでAABを署名し、Google Playがupload certificateで確認した後、app signing keyでAPKを署名してユーザー端末へ配信するオリジナル図解
  1. 開発者がrelease用AABをupload keyで署名する
  2. AABをPlay Consoleへアップロードする
  3. Google Playがupload certificateでアップロード元を確認する
  4. Google Playがapp signing keyで配信用APKを署名する
  5. ユーザー端末へ署名済みAPKが配信される

Google Playが確認するのは、開発者の秘密鍵そのものを毎回渡すことではなく、アップロードされた成果物の署名と登録済みのupload certificateの対応です。certificateは公開情報なので、FirebaseやGoogle Sign-InなどのAPI提供者へ登録する場合があります。

SHA-1・SHA-256 fingerprintとは?

fingerprintはcertificateを識別する短い値です。Play Consoleのapp signingページでは、app signing certificateとupload certificateそれぞれのMD5、SHA-1、SHA-256を確認できます。

Firebase、Google Sign-In、Mapsなどでpackage nameとfingerprintの登録を求められた場合、どのcertificateを使うサービスなのかを確認してください。SHA-1やSHA-256は署名鍵そのものではなく、certificateを識別する値です。

debug certificate、upload certificate、app signing certificateは同じとは限りません。開発版とリリース版でfingerprintが違うのは一般的です。

「signed with the wrong key」エラーの確認順

「Your Android App Bundle is signed with the wrong key」などのエラーが出たときは、いきなり新しいkeystoreを作らないでください。Play Consoleが期待しているupload certificateと、今回のAABに使った証明書が違っている可能性があります。

順番確認することよくある原因
1release buildを作っているかdebug variantやdebug.keystoreをアップロードしている
2release signing config別のkeystore path、alias、build typeを参照している
3keystoreファイルPC移行後に古いコピーや新規作成ファイルへ切り替わった
4Play Consoleのupload certificateapp signing certificateとupload certificateを取り違えている
5SHA-1 / SHA-256ローカルのrelease certificateとPlay Consoleのfingerprintが一致しない
6過去の公開方法Play App Signingを使う前の古いapp signing keyで更新している

特に多いのは、Android Studioのdebug実行では問題がないのに、release AABが別のkeystoreで署名されているケースです。公開時に使ったkeystore path、alias、署名設定を記録からたどり、Play Consoleのupload certificateと照合します。

新しいkeystoreを作れば直る?

既存アプリの更新で、勝手に新しいkeystoreを作れば解決するとは限りません。新しい秘密鍵で署名したAABは、新しいcertificateになります。Play Consoleに登録されたupload certificateと一致しなければ、同じwrong keyエラーが続きます。

新しいupload keyが必要なのは、Play App Signingを利用中で、元のupload keyを紛失・侵害した場合などです。この場合は、公式手順に沿って新しいupload keyとcertificateを用意し、Play Consoleでupload key resetを申請します。

upload keyを紛失した場合の復旧

wrong keyエラーとupload key紛失をPlay App Signingの利用有無で分岐し、照合またはupload key resetへ進むオリジナル判断フロー

Play App Signingを利用している場合

  1. まず、古いPC、バックアップ、CI/CDのsecret管理などに正しいupload keystoreが残っていないか確認する
  2. 見つからない場合は、新しいupload keyを作成する
  3. 新しいupload certificateをPEM形式で書き出す
  4. Play ConsoleのApp signing / App integrityにあるupload key resetの案内を確認する
  5. 承認・反映後に、新しいupload keyでAABを作成する

Google公式は、upload key resetを行っても、Google PlayがユーザーへAPKを配信するときに使うapp signing keyには影響しないと説明しています。つまり、Play App Signing利用中のupload key紛失は、app signing keyそのものを失った場合とは別の復旧経路です。

keytool -export -rfc \
  -keystore your-upload-keystore.jks \
  -alias upload-alias \
  -file output_upload_certificate.pem

上記はGoogle公式ドキュメントにある形式の例です。実際のkeystore path、alias、パスワードは環境のものを入力してください。記事やGitリポジトリへ秘密情報を貼り付けないでください。

Play App Signingを利用していない古いアプリの場合

Play App Signingを使わず、開発者自身がapp signing keyとkeystoreを管理している場合は、app signing keyを失うと既存アプリを同じアプリとして更新できません。Google Play公式Helpでは、keystoreを失った場合は新しいpackage nameと鍵で新規アプリを公開する必要があると説明しています。

古いアプリは、まずPlay ConsoleでPlay App Signingの利用状況を確認してください。「upload key resetが使える」と思い込んで、非利用アプリへ同じ手順を適用しないことが重要です。

upload key resetとapp signing key upgradeの違い

項目upload key resetapp signing key upgrade
変更対象Play ConsoleへAABを送るためのupload keyユーザーへ配信するAPKを署名するapp signing key
主な理由紛失、侵害、PC移行など暗号強度の向上、鍵の侵害など
配信APKへの影響Google Playのapp signing keyは変わらない新旧キーの対応やAndroidバージョン条件を確認する必要がある
判断まずupload certificateの更新手続きを確認影響範囲が大きいため公式条件を確認してから実施

upload key resetとapp signing key upgradeは名前が似ていますが、目的が違います。wrong keyエラーやupload key紛失の相談で、すぐapp signing key upgradeを選ぶ必要はありません。

Android Studioで署名設定を確認する

Google公式の手順では、upload keyとkeystoreがない場合、Android StudioのBuild > Generate Signed Bundle/APKからAndroid App BundleまたはAPKを選び、Key store path、alias、パスワードなどを設定して作成します。

  1. Build > Generate Signed Bundle/APKを開く
  2. Android App Bundleを選ぶ
  3. 正しいkeystore pathとaliasを指定する
  4. release build typeとproduct flavorを確認する
  5. 作成したAABの署名がPlay Consoleのupload certificateと一致するか確認する

debugとreleaseの取り違えを調べるときは、GradleのsigningReportが便利です。Android StudioではGradle Tool Windowから、対象プロジェクトのTasks > android > signingReportを実行して、variantごとの署名情報を確認できます。

実際のパスワードやprivate keyをGradleファイルへ直接書く運用は避けてください。Google公式も、signing configurationにはkeystore location、password、aliasなどの機密情報が含まれるため、共有・公開時の管理に注意するよう案内しています。

公開前に確認するバックアップチェックリスト

  • upload keystore(`.jks` / `.keystore`)を安全な場所へバックアップした
  • keystore passwordとkey passwordをpassword managerなどで管理した
  • 使用するaliasと対象アプリのpackage nameを記録した
  • Play Consoleのupload certificateのSHA-1 / SHA-256を控えた
  • debug用とrelease用の署名設定を分けて確認した
  • keystoreやprivate keyをGitHub・公開Gitリポジトリへcommitしていない
  • PC移行後に、CI/CDや別端末の署名設定が古い鍵を参照していないか確認した

バックアップは「ファイルをコピーした」だけで終わりにせず、復元できる場所・パスワード・alias・fingerprintがそろっているかを定期的に確認します。

FAQ

app signing keyとupload keyは何が違いますか?

upload keyは開発者がAABをPlay Consoleへ送る前に使います。app signing keyは、ユーザー端末へ配信するAPKを署名するために使います。Play App Signing利用時は、Google Playが後者を管理します。

keystoreと署名鍵は同じですか?

同じではありません。keystoreはprivate keyやcertificateを格納するファイルで、aliasによって中の鍵を指定します。

upload keyを紛失したらアプリを更新できませんか?

Play App Signing利用中なら、upload key resetという復旧手続きがあります。app signing keyはGoogle Playが保持するため、upload keyを変更しても配信用署名鍵には影響しません。

新しいkeystoreを作れば更新できますか?

通常はそのままでは更新できません。Play Consoleの登録済みupload certificateと一致するよう、正しい鍵を使うか、Play App Signing利用中ならreset手続きを確認します。

wrong keyエラーが出たらどうすればいい?

debug/release、keystore path、alias、Play Consoleのupload certificate、SHA-1 / SHA-256の順に確認してください。新しいkeystoreを作る前に、過去の公開時に使った鍵を探します。

SHA-1はどこで確認できますか?

Play Consoleのapp signingページで、app signing certificateとupload certificateのfingerprintを確認できます。Android StudioではsigningReportでvariantごとの署名情報を確認できます。

Play App SigningならGoogleが全部の鍵を管理しますか?

配信用のapp signing keyはGoogle Playが管理しますが、upload keyは開発者が管理します。upload keystoreとパスワードのバックアップは必要です。

upload key resetとapp signing key upgradeの違いは?

前者はアップロード用の鍵を変更する手続き、後者は配信用の署名鍵を強化・変更する手続きです。影響範囲が異なるため、混同しないでください。

PCを買い替えるとき何をバックアップすればいい?

upload keystore、パスワード、alias、対象アプリ、Play Consoleのcertificate fingerprint、release signing設定を安全に引き継ぎます。

keystoreをGitHubへ保存してもいいですか?

公開リポジトリへprivate keyやkeystoreを置くのは避けてください。漏えいした場合は、Play App Signingのupload key resetなど、公式の復旧手続きを確認します。

まとめ

  • app signing keyは配信用APK、upload keyはPlay Consoleへ送るAABの署名に使う
  • keystoreは鍵とcertificateを格納するファイル、certificateは公開側の情報
  • wrong keyエラーでは、debug/release、path、alias、upload certificateを順に確認する
  • Play App Signing利用中のupload key紛失は、upload key resetを確認する
  • Play App Signing非利用時のapp signing key紛失は、既存アプリの更新不能につながる
  • 公開前にkeystore、パスワード、alias、fingerprintを安全にバックアップする

参考:Android Developers:Sign your app、Google Play Console Help:Publishing issues、Google Play Console Help:Use Play App Signing。