Google Play アプリ署名の使用

Google Play アプリ署名を使用すると、アプリ署名鍵の管理と保護、APK 配信時の署名を Google に委託することができます。鍵の紛失や不正使用があった場合に、デベロッパーの皆様を保護する、アプリ署名鍵の安全な保管方法です。

重要: アプリの公開形式として推奨される Android App Bundle を使用するには、App Bundle を Play Console にアップロードする前に Google Play アプリ署名に登録する必要があります。

Google Play アプリ署名を有効にするには、アカウント所有者であるか、「製品版リリースの管理」のグローバル権限を持つユーザーである必要があり、さらに利用規約に同意する必要があります。Google Play アプリ署名に登録できるアプリは一度に 1 つずつです。

仕組み

Google Play アプリ署名を使用すると、Google が自社の鍵の保管に使用しているものと同じインフラストラクチャに鍵が保管され、Google の鍵管理サービスによって保護されます。Google の技術インフラストラクチャについて詳しくは、Google Cloud Security のホワイトペーパーをご覧ください。

Android アプリは秘密鍵で署名されます。アプリのアップデートが信頼できるものであることを保証するために、秘密鍵はそれぞれ公開鍵証明書に関連付けられています。デバイスやサービスはその公開鍵証明書を使って、アプリが信頼できる提供元によるものであることを確認できます。デバイスがアプリの更新を許可するのは、すでにそのデバイスにインストールされているアプリとアップデートで署名が一致する場合のみです。アプリ署名鍵の管理を Google に委託することによって、このプロセスのセキュリティを強化できます。

: Google Play アプリ署名の使用は必須ではありません。App Bundle を使用せずに、今までどおり APK をアップロードして、独自の鍵を管理することもできます。ただし、キーストアを紛失したり、不正使用されたりした場合は、アプリを更新できなくなり、新しいパッケージ名で新しいアプリとして公開することが必要になります。

鍵、アーティファクト、ツールの説明
用語 説明
アプリ署名鍵

ユーザーのデバイスに配信される APK の署名に Google Play が使用する鍵。Google Play アプリ署名を有効にする場合は、既存のアプリ署名鍵をアップロードするか、Google が代わりにアプリ署名鍵を生成するかを選択できます。

一度指定したアプリ署名鍵は、以降一切変更することはできません。アプリ署名鍵は非公開にしておく必要がありますが、アプリの公開鍵証明書は誰とでも共有できます。

アップロード鍵

App Bundle または APK を Google Play にアップロードするための署名に使用する鍵。アップロード鍵は非公開にしておく必要がありますが、アプリの公開鍵証明書は誰とでも共有できます。セキュリティ上の理由から、アプリ署名鍵とアップロード鍵はそれぞれ別のものを用意することをおすすめします。

アップロード鍵を生成する方法は 2 つあります。

  • アプリ署名鍵を使用する: 登録時に Google がアプリ署名鍵を生成するように選択した場合は、初回リリースに使用する鍵が、アップロード鍵になります。
  • 別のアップロード鍵を使用する: 登録時に独自のアプリ署名鍵を指定した場合は、セキュリティを強化するために新しいアップロード鍵を生成することが選択できるようになります。新たに生成しない場合は、アプリ署名鍵をアップロード鍵として使用してリリースに署名します。
証明書(.der または .pem

証明書には、公開鍵と鍵の所有者に関する追加の識別情報が記載されます。公開鍵証明書により、誰でも App Bundle または APK の署名者を確認できます。秘密鍵の情報は含まれていないので、公開鍵証明書は誰とでも共有できます。

API プロバイダに鍵を登録するために、Play Console の [アプリの署名] ページからアプリ署名鍵とアップロード鍵の公開鍵証明書をダウンロードできます。公開鍵証明書は誰とでも共有可能で、秘密鍵の情報は含まれません。

証明書フィンガープリント

証明書を表す一意の短いデータです。API プロバイダのサービスを利用できるようにアプリを登録する際に、パッケージ名と合わせて証明書フィンガープリントをリクエストされることがよくあります。

アップロード鍵とアプリ署名鍵の証明書の MD5、SHA-1、SHA-256 の各フィンガープリントは、Play Console の [アプリの署名] ページで確認できます。同じページから元の証明書(.der)をダウンロードして、その他のフィンガープリントを計算することもできます。

Java Keystore(.jks または .keystore セキュリティ証明書と秘密鍵のリポジトリです。
Play Encrypt Private Key(PEPK)ツール

Java Keystore から秘密鍵をエクスポートして暗号化し、Google Play に転送するためのツールです。

Google で使用されるアプリ署名鍵を提供する際に、Java Keystore から鍵をエクスポートしてアップロードする(必要に応じて、公開鍵証明書も含める)オプションを選択し、指示に沿ってこのツールをダウンロードして使用します。PEPK ツールのオープンソース コードをダウンロードして、確認、使用することもできます。

アプリ署名のプロセス

元のアプリ署名鍵で署名された APK は、Google Play アプリ署名を有効にする前でも、した後でもアップロードすることができます。

Android App Bundle を使い始めるときには、既存の製品版 APK を使用しながら、App Bundle をテスト版トラックでテストすることができます。このプロセスの仕組みは次のとおりです。

  1. App Bundle または APK に署名して Play Console にアップロードします。
  2. 何をアップロードしたかに応じて、署名プロセスは次のように異なります。
    • App Bundle: Google が App Bundle から最適化された APK を生成し、アプリ署名鍵を使用して署名します。
    • アップロード鍵で署名された APK: Google が署名を確認して APK からその署名を削除し、アプリ署名鍵を使用して APK に再署名します。
    • アプリ署名鍵で署名された APK: Google が署名を確認します。
  3. 署名された APK を Google がユーザーに配信します。

Google Play アプリ署名を有効にする

新しいアプリ

ステップ 1: アップロード鍵を作成する

  1. 手順に沿って、アップロード鍵を作成します。
  2. 作成したアップロード鍵で新しい APK に署名します。

ステップ 2: リリースを準備する

  1. 手順に沿って、リリースを準備して公開します。
  2. リリース トラックを選択したら、[Google でアプリ署名鍵の管理、保護を行う] セクションでアプリ署名を設定します。
  3. [次へ] を選択して、生成した鍵を今後アップロード鍵としてリリースの署名に使用するか、[詳細オプション] を選択します。詳細オプションには次のようなものがあります。
    • 自分のデベロッパー アカウントにある別のアプリと同じ鍵を使用する(オプション 2)。
    • 既存のアプリ署名鍵をアップロードする(オプション 2、3、4): 最適なエクスポートとアップロードのオプションを選択します。アプリ署名鍵と公開鍵証明書をアップロードした後、アップロード鍵を作成することも、そのアプリ署名鍵をアップロード鍵として引き続き使用することもできます。

: 手順を続けるには、利用規約に同意して、アプリ署名を有効にする必要があります。

ステップ 3: API プロバイダにアプリ署名鍵を登録する

アプリで API を使用している場合は通常、認証のために、Google でアプリの署名に使用される鍵の証明書を登録する必要があります。一般には証明書のフィンガープリントを使用します。証明書の場所は次のように探します。

  1. Play Console にログインします。
  2. アプリを選択します。
  3. 左側のメニューで [リリース管理] > [アプリの署名] を選択します。
  4. アプリ署名証明書のフィンガープリント(MD5、SHA-1、SHA-256)をコピーします。
    • API プロバイダで別のタイプのフィンガープリントが必要な場合、元の証明書を .der 形式でダウンロードし、API プロバイダが要求する変換ツールを使って変更することもできます。
既存のアプリ

ステップ 1: Google Play アプリ署名に登録する

  1. Play Console にログインします。
  2. アプリを選択します。
  3. 左側のメニューで [リリース管理] > [アプリの署名] を選択します。
  4. まだであれば、利用規約を確認して [同意する] を選択します。

ステップ 2: 元の鍵を Google に送信してアップロード鍵を作成する

  1. 元のアプリ署名鍵の場所を確認します。
  2. Play Console にログインします。
  3. アプリを選択します。
  4. 左側のメニューで [リリース管理] > [アプリの署名] を選択します。
  5. リリース プロセスに最適なエクスポートとアップロードのオプションを選択し、既存のアプリ署名鍵をアップロードします。

ステップ 3: アップロード鍵を作成する(省略可、推奨)

  1. アップロード鍵を作成し、Google Play に証明書をアップロードします。
    • アプリ署名鍵をアップロード鍵として引き続き使用することもできます。
  2. アプリ署名証明書のフィンガープリント(MD5、SHA-1、SHA-256)をコピーします。
    • テストを行うには、証明書のフィンガープリントとアプリ署名鍵を使用して、アップロード鍵の証明書を API プロバイダに登録することが必要な場合があります。

ステップ 4: 次のアプリのアップデートにアップロード鍵で署名する

アプリのアップデートをリリースするには、アップロード鍵でアップデートに署名する必要があります。

  • 新しいアップロード鍵を生成していない場合: 引き続き元のアプリ署名鍵を使用してリリースに署名し、Google Play にアップロードします。アプリ署名鍵を紛失した場合は、新しいアップロード鍵を生成して Google に登録し、アプリの更新を続行できます。
  • 新しいアップロード鍵を生成した場合: 新しいアップロード鍵を使用してリリースに署名し、Google Play にアップロードします。アップロードすると、Google はそのリリースのアップロード鍵で、デベロッパーの本人確認を行います。アップロード鍵を紛失した場合は、サポートに連絡してリセットすることができます。

アップロード鍵の作成とキーストアの更新

セキュリティを強化するために、アプリ署名鍵ではなく新しいアップロード鍵を使用してアプリに署名することをおすすめします。

アップロード鍵は、Google Play アプリ署名を有効にするときに作成するか、後で [リリース管理] > [アプリの署名] にアクセスして作成できます。

アップロード鍵を作成する際は下記をご参照ください。

  1. Android Developers サイトの手順に沿ってアップロード鍵を作成します。鍵は安全な場所に保管してください。
  2. アップロード鍵の証明書を PEM 形式でエクスポートします。以下の下線付きの引数を置き換えてください。
    • $ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
  3. リリース プロセス中、指示に沿って、証明書をアップロードして Google に登録します。

アップロード鍵を使用すると:

  • アップロード鍵はアプリ作成者の認証する目的でのみ Google に登録されます。
  • アップロードした APK は、ユーザーに送信される前に署名が削除されます。
アップロード鍵に関する制限
  • 2,048 ビット以上の RSA 鍵であること。
  • DSA 鍵、EC 鍵、2,048 ビット未満の RSA 鍵は使用不可。
キーストアを更新する

アップロード鍵を作成した後、以下の場所の確認と更新が必要になることがあります。

  • ローカルマシン
  • ロックされたオンサイト サーバー(各種 ACL)
  • クラウドマシン(各種 ACL)
  • 専用の秘密管理サービス
  • (Git)リポジトリ

おすすめの方法

  • Google Play 以外でもアプリを配信している、または、する予定がある場合は、各アプリストアで使用するアプリ署名鍵を生成してから、Google Play アプリ署名に登録時に、その鍵を Google にアップロードしてください。
  • アカウントを保護するため、Play Console にアクセスできるすべてのアカウントで 2 段階認証プロセスを有効にしてください
  • App Bundle をテスト版トラックまたは製品版トラックに公開すると、App Bundle エクスプローラで特定のデバイス用のすべての APK を含む ZIP アーカイブをダウンロードできます。この ZIP アーカイブ内の APK は、アプリ署名鍵で署名されており、bundletool コマンドライン ユーティリティを使用してデバイスにインストールできます。
  • セキュリティを強化するには、アプリ署名鍵とは異なる新しいアップロード鍵を生成してください。
  • アップロード鍵で署名された APK をテストするには、認証にアプリの署名を使用しているサービスや API(Google Maps API、Facebook SDK など)にアップロード鍵を登録する必要があります。
  • Google API を使用している場合は、Google Cloud Console にアプリのアップロード証明書を登録することをおすすめします。

アップロード鍵の紛失または不正使用

非公開のアップロード鍵を紛失した場合、または不正使用された場合は、新しい鍵を作成し、アカウントの所有者からサポートチームに鍵のリセットを依頼してください。サポートへご連絡の際、アカウントの所有者は upload_certificate.pem ファイルを添付していることをご確認ください。

サポートチームが新しいアップロード鍵を登録したら、メールでお知らせします。その後、キーストアを更新して API プロバイダに新しい鍵を登録できます。

重要: アップロード鍵をリセットしても、ユーザーに配信する前に Google Play が APK の再署名に使用するアプリ署名鍵には影響はありません。

この記事は役に立ちましたか?
改善できる点がありましたらお聞かせください。