1. ホーム
  2. android

[解決済み] 鍵屋、証明書、エイリアスを理解する

2023-01-13 18:29:26

質問

鍵ストアは実際の証明書ですか、それともエイリアスが証明書ですか?

アプリの署名に別のエイリアスを使用した場合、マーケットでの更新を混乱させるでしょうか。それとも、別の鍵ストアでアプリに署名しないと、事態は混乱するのでしょうか。また、エイリアスの下の情報はどこから見ることができるのでしょうか?

どのように解決するのですか?

で生成したキーストアファイルが キーツール は秘密鍵と公開鍵のペアを保存する。鍵ストアに格納された各ペアまたはエントリは、一意のエイリアスによって参照されます。簡単に言うと

キーストアエントリー = 秘密鍵 + 公開鍵 ペア = エイリアスで識別

鍵ストアは、それぞれの秘密鍵を個別のパスワードで保護し、さらに鍵ストア全体の整合性を(おそらく異なる)パスワードで保護します。

たとえば、Eclipse Android ツールの Export Signed Application Package オプションを使用して Android アプリケーションに署名する場合、最初に鍵ストアを選択するよう求められ、次にその鍵ストアから 1 つのエイリアス/エントリー/ペアを選択するよう求められます。鍵ストアと選択したエイリアスの両方のパスワードを提供すると、アプリが署名され、そのエイリアスの公開鍵(証明書)が APK に埋め込まれます。

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

しかし、新しいエイリアスを使用してアプリに署名する方法がありますが、それには鍵ストアにある既存のエイリアスを keytool -keyclone :

新しいキーストアエントリーを作成します。 同じプライベートキーと 証明書チェーンを持つ エントリを作成します。

元のエントリは エイリアス (提供されない場合、デフォルトは "mykey") で識別されます。 を指定します)。新しい(宛先の)エントリは のエントリは dest_alias で識別されます。もし で宛先エイリアスが指定されていない場合 コマンドラインで提供されない場合、ユーザはプロンプトを表示され が表示されます。

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

より詳細な情報です。

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

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