2011-04-20 11 views
91

キーストアは実際の証明書ですか、証明書のエイリアスですか?キーストア、証明書、エイリアスの理解

私のアプリに署名するために別名を使用すると、マーケット上のアップデートが混乱しますか?または、私は物事を混乱させるために別のキーストアで私のアプリケーションに署名する必要がありますか?エイリアスの下の情報はどこから表示できますか?

答えて

120

Keytoolによって生成されたキーストアファイルには、プライベートキーとパブリックキーのペアが格納されます。キーストアに格納されている各ペアまたはエントリは、一意のエイリアスによって参照されます。簡単に説明すると:

キーストアエントリ=パブリック+プライベートキー ペア=別名

キーストアがその個々のパスワードを使用して、各秘密鍵を保護し、また、キーストア全体の整合性を保護することによって識別されます(おそらく異なる)パスワード。

たとえば、Android Androidツールの[署名付きアプリケーションパッケージのエクスポート]オプションを使用してAndroidアプリケーションに署名する場合は、まずキーストアを選択してからそのキーストアから単一のエイリアス/エントリ/ペアを選択するよう求められます。キーストアと選択されたエイリアスの両方のパスワードを入力すると、アプリケーションに署名が付けられ、そのエイリアスの公開鍵(証明書)がAPKに埋め込まれます。

あなたの質問に答えるには、エイリアス 'foo'で署名されたアプリケーションのアップデートを、同じエイリアスで再度署名することによってのみリリースすることができます。エイリアスが保存されているキーストアを失うと、更新されたバージョンのアプリが公開されなくなります。

あり新しいエイリアスを持つアプリに署名する方法がしかしですが、それは、keytool -keycloneを使用して、キーストア内の既存の別名をクローニング含まれます

は同じを持つ新しいキーストアエントリを作成します。秘密鍵と 証明書チェーンは元のとおり エントリ。

元のエントリは、 エイリアス(デフォルトでは、 が指定されていない場合は "mykey"になります)によって識別されます。新しい(宛先) エントリはdest_aliasによって識別されます。 のコマンドラインに宛先エイリアスが指定されていない場合、ユーザには が入力されます。

秘密鍵のパスワードがキーストアのパスワードと異なる 、 有効なキーパスが供給されている場合は、エントリにのみ複製されます場合には。これは、 のエイリアスに関連付けられた秘密鍵 を保護するために使用されるパスワードです。 コマンドラインでキーパスワードが指定されておらず、プライベートキー のパスワードが のキーストアパスワードと異なる場合、ユーザーには というプロンプトが表示されます。 の秘密鍵は、必要に応じて、別のパスワード で保護することができます。 コマンドラインに-newオプションが指定されていない場合は、新しいエントリのパスワード を入力するように求められます( は、クローンエントリの秘密鍵の と同じにすることを選択できます)。

詳細情報:

http://download.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html

http://developer.android.com/guide/publishing/app-signing.html

+3

のdevのサイトでは、すべてのアプリのために同じ証明書を使用することを提案しています。これはつまり、同じキーストアを使用している限り、任意のエイリアスを任意のパスワードで使用することができ、ちょうど参考になるので、アップデートを混乱させることはありませんか?実際のキーストアは重要な部分ですか? – Roger

+1

より正確な答えを書きました。つまり、アプリケーションのすべての更新に同じエイリアスを使用して署名する必要があります。 –

+2

@Julio devサイトが示唆しているように、公開したいすべての異なるAppsに同じエイリアスを使用することをお勧めします。私はすべてのあなたのAppsのために別々のエイリアスを作成する理由は見当たりません。 –

関連する問題