Google Playの署名鍵とアップロード鍵の違いは?紛失・wrong keyエラーの対処まで解説
初回掲載日:
最終更新日:
結論: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 key | Play 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が配信用に再署名する二段階です。
- 開発者がrelease用AABをupload keyで署名する
- AABをPlay Consoleへアップロードする
- Google Playがupload certificateでアップロード元を確認する
- Google Playがapp signing keyで配信用APKを署名する
- ユーザー端末へ署名済み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に使った証明書が違っている可能性があります。
| 順番 | 確認すること | よくある原因 |
|---|---|---|
| 1 | release buildを作っているか | debug variantやdebug.keystoreをアップロードしている |
| 2 | release signing config | 別のkeystore path、alias、build typeを参照している |
| 3 | keystoreファイル | PC移行後に古いコピーや新規作成ファイルへ切り替わった |
| 4 | Play Consoleのupload certificate | app signing certificateとupload certificateを取り違えている |
| 5 | SHA-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を紛失した場合の復旧
Play App Signingを利用している場合
- まず、古いPC、バックアップ、CI/CDのsecret管理などに正しいupload keystoreが残っていないか確認する
- 見つからない場合は、新しいupload keyを作成する
- 新しいupload certificateをPEM形式で書き出す
- Play ConsoleのApp signing / App integrityにあるupload key resetの案内を確認する
- 承認・反映後に、新しい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 reset | app 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、パスワードなどを設定して作成します。
- Build > Generate Signed Bundle/APKを開く
- Android App Bundleを選ぶ
- 正しいkeystore pathとaliasを指定する
- release build typeとproduct flavorを確認する
- 作成した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。