9

Google マーケット向けにアプリを準備しようとしていますが、予想よりもはるかに困難であることがわかっています。アプリに署名するという概念全体を把握できないようですが、より具体的に言えば、私の問題は、Eclipse 用の keytool プラグインをインストールしたことですが、証明書を作成するときに、キーストアを選択するように求められます (ファイル名を入力してください)。とキーストアのパスワード)、ファイルとして何を入力する必要があるのか​​ わかりません。実際には、ブラウズでファイルを選択する必要があり、ファイルのエクスポートをどのように進めればよいか、Google は悲しいことに思いつきませんでした非常に良いまたは明確な回答

4

1 に答える 1

23

新しいキーストア ファイルを作成する場合は、新しいキーストア ファイルの場所とファイル名を指定する必要があります。または、「既存のキーストアを使用する」を選択して、既存のキーストア ファイルの場所を参照することもできます。

編集:精巧な答えを提供すると思いました。この情報がお役に立てば幸いです。

署名とは何か、なぜ必要なのか。

Android で使用される apk 署名メカニズムは、以下を保証するためにアプリケーションのバイトコードとリソースに適用されるデジタル署名の使用例です。

  • 整合性 (ダウンロード後にアプリを改ざんしない)
  • 信頼性 - アプリを GooglePlay にリリースしたのはあなたです

デジタル署名をよりよく理解するために、 public-key cryptographyもざっと読むことをお勧めします。

それはどのように機能しますか。

Android は、標準 Java アプリの署名/検証に使用されるのと同じ標準 JDK ツールを使用します。

  • jarsigner - 提供された でデータに署名し、証明書private keyでデータを検証します(つまり、ID にバインドされた公開鍵)
  • keytool - で秘密鍵と証明書を管理しますkeystore。これらのキーは に必要ですjarsigner

アプリケーションに手動で署名するjarsignerか、IDE を使用して署名済みアプリケーションをエクスポートした後 (いずれにせよ内部で と を使用しますkeytool) 、署名済みの .apk アーカイブのディレクトリにあるjarsigner署名関連ファイルを見つけることができます。META-INF

  • CERT.SF -SHAアプリ コンポーネントのハッシュを含むファイルと
  • CERT.RSA (または .DSA) - 上記のファイルのデジタル署名 + この署名を検証するための公開証明書。歌がどのように機能するかの詳細については、こちらをご覧ください。

リリースのためにアプリケーションに適切に署名する方法。

この記事では、従う必要がある手順について非常によく説明しています。

: 署名に進む前に、リリース前の重要な手順を検討してください: ログ/重要な文字列リテラルの削除、proguard による難読化など。

以下に、プロセスの重要なポイントをいくつか示します。

秘密鍵を生成し、 java に配置しkeystoreます。

keystore持っていない場合は、最初に作成する必要があります。これは、データの完全性を確保するために使用されkeystoreます(つまり、あなたではなく誰かが新しい証明書をキーストアに追加した後、キーストアが改ざんされていることが警告されます)。実際には、ファイルを安全に保つ場合、このパスワードはそれほど重要ではありません。いつの日か忘れたら逃げられます。Keystore passwordkeystorekeystore

を生成するときに、キーストア内で秘密鍵を暗号化するために使用されるprivate keyも作成するよう求められます。これは非常に重要なパスワードですPrivateKey password

  • あなたの秘密鍵は本当に秘密です。最も重要な
  • このパスワードがなければ、秘密鍵を使用して署名し、アプリケーションの将来の更新をリリースすることはできません。

Eclipse で新しい秘密鍵を生成すると、自己署名証明書の作成に使用される ID 情報を提供するよう求められます。

次のステップとして、private key指定しkeystoreたファイルを使用してアプリケーションに署名し、.apk上記で説明した署名関連のファイルで更新します。

いくつかの重要な用語:

キーストアは、秘密鍵/証明書のリストを特定の形式で保持する単一のバイナリ ファイルです。KeyStore.javaによって提供される API を使用してプログラムでアクセスできます。キーストアには複数の秘密鍵エントリを含めることができ、それぞれが で識別されますalias
ほとんどの場合、keystoreこの秘密鍵と一致する単一の自己署名証明書を持つ単一の秘密鍵があります。

キーストア パスワードは、キーストア コンテンツの整合性チェックに使用されます。
このパスワードを紛失しても、秘密鍵のパスワードが内部に保存されている場合は、次のコマンドを実行して、キーストアを「複製」し、新しいキーストア パスワードを提供できます。

keytool -importkeystore -srckeystore path/to/keystore/with/forgotten/pw -destkeystore path/to/my/new/keystore

新しいパスワードを入力し、古いキーストアのパスワードを空白のままにします - 警告のみが表示されます。その後、新しいキーストアを使用して、古いキーストアを削除できます。
キーストアのパスワードを使用せずに秘密鍵を取得する方法は他にもあります。

秘密鍵のパスワード-private key内部を (暗号化して) 保護しますkeystore。秘密鍵にアクセスして、特にアプリケーションの更新に署名できるため、これは非常に重要です。一般に、それを回復することは非常に困難です。

自己署名証明書 - ID (名前/組織/電子メール) を公開鍵にバインドする非常に単純な証明書。.apkこの証明書は、署名操作中にファイルに追加され、.apkインストール前に確認するためにユーザーのデバイスで使用されます。

于 2013-11-03T13:41:40.280 に答える