メインコンテンツへスキップ

Android署名

Android Keystore ジェネレーター

Android Studioやkeytoolを使わずに、オンラインで数秒でAndroid keystoreを生成できます。Gradle、Capacitor、fastlane、CI、Google Playですぐに使えるPKCS#12形式のリリース用keystore、PEM証明書、SHA-1とSHA-256のフィンガープリントを取得できます。

コンテナ

PKCS#12

キー

RSA 2048、SHA-256

フィンガープリント

SHA-1 と SHA-256

リリースチェックリスト

  1. 1. 今後もこのアプリで使い続けるエイリアスとパスワードを選択してください。
  2. 2. keystoreをダウンロードし、メタデータをシークレットマネージャーに保存してください。
  3. 3. GradleまたはCI環境で、同じエイリアスとパスワードを設定してください。
  4. 4. 今後のPlayリリースで問題が起きないよう、アップロードキーを変更しないでください。

入力

Keystoreの詳細

署名証明書に埋め込むサブジェクト情報を入力し、安定したエイリアスを選択してください。

出力

生成されたAndroid署名用bundle

生成後、ダウンロード可能なkeystoreに加え、ストア設定やOAuth連携に必要な証明書エクスポートとfingerprintを取得できます。

署名用bundleを生成すると、ここにエイリアス、fingerprint、ファイルのダウンロードが表示されます。

基本情報

Android keystoreとは?

Android keystoreは、アプリの署名に使用する秘密鍵と証明書を格納した、パスワード保護されたファイルです。すべてのAPKおよびAndroid App Bundleは、インストールや公開の前に署名を行う必要があり、Androidは既にインストールされているバージョンと同じ鍵で署名されたアップデートのみを受け付けます。

そのため、keystoreはプロジェクトにおいて最も重要なファイルの一つです。Play App Signingを使用している場合、それは キーストアのアップロードとして機能し、Googleがアプリを再署名する前にチェックを行います。Play App Signingを使用していない場合は、 アプリ署名鍵 そのものとなり、これを紛失するとアプリのアップデートができなくなります。

このジェネレーターは、RSA 2048ビット鍵とSHA-256証明書を含むPKCS#12 (.p12) keystoreを作成します。出力は以下と同じです: keytool およびAndroid Studioの署名ウィザードと同じで、Google Playの要件を満たす25年のデフォルト有効期間があります。

セキュリティとプライバシー

keystoreの生成プロセス

  • keystoreは、ステートレスな Capgo エンドポイントがHTTPS経由でオンデマンドに作成し、ダウンロードとしてブラウザに直接返します。
  • レスポンスは以下とともに送信されます: Cache-Control: no-store。秘密鍵、パスワード、ファイルがデータベースに保存されたり、レスポンス後に保持されたりすることはありません。
  • keystoreは、PKCS#12コンテナ内でAES-256暗号化により、指定したパスワードで保護されます。
  • アカウント作成やサインアップは不要です。なお、悪用防止のためリクエストにはレート制限が設けられています。

鍵をマシンの外に出したくない場合は、同等の keytool コマンドをローカルで実行してください。同じ種類のkeystoreが生成されます。

同等のkeytoolコマンド
keytool -genkeypair -v \
  -storetype PKCS12 \
  -keystore release.p12 \
  -alias release \
  -keyalg RSA -keysize 2048 \
  -validity 9125 \
  -dname "CN=Jane Doe, O=Acme Mobile, C=DE"

ステップバイステップ

Android keystoreをオンラインで生成する方法

空のフォームからGoogle Playへの署名済みリリースまで、6ステップで完了。最初の3ステップは1分未満で終わります。

  1. ステップ 1

    証明書の詳細を入力

    氏名、メールアドレス、2文字の国コードcodeを入力してください。組織名、部署、都市、州は任意で、証明書のサブジェクトにのみ含まれます。

  2. ステップ 2

    エイリアス、有効期間、パスワードを設定

    releaseやuploadのようなシンプルなエイリアスを選び、25年の有効期間はそのままに、8文字以上の強力なパスワードを設定してください。続行する前に3つとも控えてください。

  3. ステップ 3

    keystoreを生成してダウンロード

    「Generate keystore」を選択し、.p12 keystoreとPEM証明書をダウンロードします。結果パネルからSHA-1とSHA-256フィンガープリントをコピーしてください。

  4. ステップ 4

    Keystore と認証情報のバックアップ

    Keystore ファイル、エイリアス、パスワードはパスワードマネージャーやシークレットマネージャーにまとめて保存してください。Keystore を Git にコミットしないでください。

  5. ステップ 5

    ビルド時の署名設定

    Gradle、Capacitor CLI、fastlane、または Capgo Cloud Build で、エイリアスとパスワードを指定して Keystore を参照するように設定し、署名済みのリリース用 AAB または APK をビルドします。

  6. ステップ 6

    署名済みアプリを Google Play にアップロード

    Play Console で署名済みの Android App Bundle をアップロードします。Play App Signing を使用する場合、この Keystore はアップロードキーとなり、最終的なアプリ署名キーは Google が管理します。

出力結果を使う

生成された Keystore で Android アプリに署名する

エイリアスとパスワードを、上記で入力した値に置き換えます。Keystore は PKCS#12 形式であるため、キーパスワードはストアパスワードと同じです。

Gradle署名設定

Capacitor、Ionic、React Native、Flutter、ネイティブプロジェクトに対応。パスワードは gradle.properties または環境変数に保存してください。

android/app/build.gradle
// android/app/build.gradle
android {
    signingConfigs {
        release {
            storeFile file(RELEASE_STORE_FILE)
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_STORE_PASSWORD
            storeType "pkcs12"
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}

# ~/.gradle/gradle.properties (keep out of Git)
RELEASE_STORE_FILE=/path/to/release.p12
RELEASE_STORE_PASSWORD=your-password
RELEASE_KEY_ALIAS=release

Capacitor CLI

コマンド一つで Capacitor アプリ用の署名済み Android App Bundle をビルドします。

Capacitor 署名済みビルド
bunx cap build android \
  --keystorepath ./release.p12 \
  --keystorepass "your-password" \
  --keystorealias release \
  --keystorealiaspass "your-password" \
  --androidreleasetype AAB

Capgo Cloud Build

キーストアを一度保存すれば、 Capgo で iOS と Android アプリをクラウド上でビルド・署名.

Capgo CLI
bunx @capgo/cli@latest build credentials save \
  --platform android \
  --keystore ./release.p12 \
  --keystore-alias release \
  --keystore-key-password "your-password" \
  --keystore-store-password "your-password"

fastlane

CI のシークレットから Gradle アクションに署名プロパティを注入します。

Fastfile
gradle(
  task: "bundle",
  build_type: "Release",
  properties: {
    "android.injected.signing.store.file" => ENV["RELEASE_STORE_FILE"],
    "android.injected.signing.store.password" => ENV["RELEASE_STORE_PASSWORD"],
    "android.injected.signing.key.alias" => ENV["RELEASE_KEY_ALIAS"],
    "android.injected.signing.key.password" => ENV["RELEASE_STORE_PASSWORD"],
  }
)

CIで検証、変換、保存

エイリアスとフィンガープリントを確認し、レガシーツール用にJKSに変換するか、CIシークレット用にファイルをエンコードします。

keytoolとbase64
# Inspect the keystore, alias, and fingerprints
keytool -list -v -keystore release.p12 -storetype PKCS12

# Convert to JKS if an older tool requires it
keytool -importkeystore \
  -srckeystore release.p12 -srcstoretype PKCS12 \
  -destkeystore release.jks -deststoretype JKS

# Base64-encode the keystore for a CI secret
base64 -i release.p12 | tr -d '\n' > release.p12.base64

トラブルシューティング

Androidキーストアの一般的なエラーと修正方法

Keystore が改ざんされているか、パスワードが正しくありません
ストアパスワードが違います。パスワードマネージャーから再度コピーし、CIシークレットの末尾にスペースがないか確認してください。
keystore内にエイリアス 'release' のキーが見つかりません
エイリアスが一致しません。keytool -list を実行して正確なエイリアス(大文字小文字を区別)を確認してください。
最終ブロックのパディングが正しくありません
キーパスワードが違います。PKCS#12キーストアでは、キーパスワードはストアパスワードと一致する必要があります。
無効なkeystore形式
古いJava 8ツールチェーンがPKCS#12ファイルをJKSとして読み取っています。GradleでstoreTypeを"pkcs12"に設定するか、keytool -importkeystoreでファイルをJKSに変換してください。
Android App Bundleが誤ったキーで署名されています
Google Playは元のアップロードキーを期待しています。そのキーで署名するか、新しいkeystoreのPEM証明書を使用してPlay Consoleでアップロードキーのリセットをリクエストしてください。
Google Sign-InまたはFirebase Authがリリースビルドでのみ失敗します
FirebaseにリリースSHA-1とSHA-256フィンガープリントを追加し、Play ConsoleからのPlay App Signingキーのフィンガープリントも追加してください。

よくある質問

Android keystoreジェネレーターFAQ

keystore形式、パスワード、有効期限、Google Playアップロードキー、キーを紛失した場合の対応について。

Android keystoreとは?

Android keystoreは、APKやAndroid App Bundleの署名に使用する秘密鍵と証明書を含むパスワード保護ファイルです。AndroidとGoogle Playはこの署名を使用して、すべてのアップデートが同じ開発者からのものであることを検証するため、アプリの将来のすべてのリリースに同じキーで署名する必要があります。

Android StudioなしでオンラインからAndroid keystoreを生成するには?

上のフォームに名前、メールアドレス、国 code、キーのエイリアス、有効期間、パスワードを入力し、「Generate keystore」を選択してください。すぐに使える .p12 keystore、証明書のPEMコピー、SHA-1およびSHA-256のフィンガープリントが生成されます。Android Studio、JDK、keytoolのインストールは不要です。

このAndroid keystore generatorが生成するファイル形式は何ですか?

単一のRSA 2048ビット署名キーとSHA-256署名証明書を含むPKCS#12 (.p12) keystore、およびPEM形式の証明書エクスポートを出力します。PKCS#12はJava 9以降のデフォルトのkeystoreタイプで、Gradle、apksigner、jarsigner、Google Playで受け入れられています。古いツールでJKSファイルが必要な場合は、keytool -importkeystore で変換してください。

オンラインでkeystoreを生成しても安全ですか?キーは保存されますか?

keystoreはHTTPS経由のステートレスな Capgo エンドポイントによってオンデマンドで生成され、ブラウザに直接返されます。レスポンスには Cache-Control: no-store が付与され、秘密鍵、パスワード、ファイルがデータベースに書き込まれたり、レスポンス後に保持されたりすることはありません。セキュリティポリシー上、キーをマシンの外に出せない場合は、このページに記載されている同等のkeytoolコマンドを使用してください。

このkeystoreをGoogle Playのリリースに使用できますか?

はい。Play App Signingを導入した新しいアプリのアップロードキーとして、またはAPKを直接配布するためのアプリ署名キーとして使用できます。Google Playでは証明書の有効期限が少なくとも2033年10月22日までであることが求められますが、デフォルトの25年間の有効期間はこの条件を満たしています。

ストアパスワードとキーのパスワードは分けるべきですか?

PKCS#12形式のkeystoreでは、コンテナとキーで1つのパスワードを共有します。Gradle、Capacitor CLI, fastlane、または Capgo Cloud Buildでは、store passwordとkey passwordの両方に同じ値を入力してください。

有効期間はどのくらいに設定すべきですか?

デフォルトの25年のままにしてください。Googleは少なくとも25年を推奨しており、2033年10月22日より前に期限が切れる証明書で署名されたアップロードはGoogle Playで拒否されます。既存のキーの有効期間を後から延長することはできません。

keystoreやパスワードを紛失した場合はどうなりますか?

Play App Signingを使用している場合は、ここで新しいkeystoreを生成してPEM証明書をアップロードすることで、Play ConsoleからアップロードキーのリセットをGoogleに依頼できます。Play App Signingを使用していない場合、キーを紛失すると同じアプリの掲載情報にアップデートを公開できなくなるため、ファイル、エイリアス、パスワードはシークレットマネージャーにバックアップしておいてください。

デバッグ用keystoreにもこのツールは必要ですか?

通常は不要です。Android SDK は ~/.android/debug.keystore に、パスワード「android」、エイリアス「androiddebugkey」でデバッグ用keystoreを自動的に作成します。このジェネレーターは、ストアリリースを通じて変わらないリリース用・アップロード用キーに使用してください。

SHA-1とSHA-256のフィンガープリントはどこで確認できますか?

生成直後に結果パネルに表示されます。Firebase、Google Sign-In、Google Maps、Android App Links (assetlinks.json) に登録してください。なお、Play App Signingでアプリが再署名されると、Googleの各サービスにはPlay Consoleのアプリ署名キーのフィンガープリントも必要になる点に注意してください。

Capacitor、Ionic、React Native、Flutterアプリでも使えますか?

はい。keystoreはフレームワークに依存しません。Gradleを使うAndroid buildなら、Capacitor、Ionic、React Native、Flutter、ネイティブのKotlinやJavaプロジェクトを含め、どれでも署名できます。

Capgo Native Build

Capgo で iOS と Android アプリをクラウドでビルド・署名

このツールで生成したkeystoreをアップロードし、CIからリリースbuildを実行すれば、自前のbuild farmを構築することなく、署名済みのAndroid App BundleをGoogle Playへ配信できます。

Native Build を詳しく見る