2011-04-20 27 views
91

Anahtar deposu gerçek sertifika mı, yoksa sertifikanın diğer adı mı?Anahtar deposu, sertifika ve diğer adların anlaşılması

Uygulamamı imzalamak için farklı bir takma ad kullanırsam, pazardaki güncellemeleri dağıtır mıyım? Ya da bir şeyleri mahvetmek için uygulamanızı farklı bir anahtar deposuyla imzalamam gerekir mi? Ve takma adın altındaki bilgiler nerede görüntülenebilir?

cevap

120

Keytool tarafından oluşturulan anahtar deposu dosyası, özel ve genel anahtar çiftlerini depolar. Anahtar deposunda saklanan her çift veya giriş, benzersiz bir takma ad ile ifade edilir. Özet olarak:

Keystore girişi = kamu + özel anahtar çifti = bir takma ad

deposu bireysel şifre ile her özel anahtarı korur ve aynı zamanda tüm anahtar deposunun bütünlüğünü ile korur tarafından tespit a (muhtemelen farklı) şifre. Eğer Dışa kullanan bir Android uygulamasını imzalamak

Örneğin

Eclipse Android aracının Uygulama Paketi seçeneği, önce bir anahtar deposunu seçmek istenir İmzalı ve sonra da anahtar deposundan tek takma/girişini/çiftini seçmek istedi . Hem anahtar deposu hem de seçilen diğer ad için şifreler sağlandıktan sonra, uygulama imzalanır ve bu takma ad için genel anahtar (sertifika) APK'ya gömülür.

Sorunuzu yanıtlamak için, güncellemeyi aynı takma adıyla yeniden imzalayarak yalnızca bir takma adı 'foo' ile imzalanmış bir uygulamaya yayınlayabilirsiniz. Takma adınızın depolandığı anahtar deposunu kaybetmeniz, uygulamanızın güncellenmiş bir sürümünü yayınlamanızı engeller.

Orada yeni bir takma adı ile bir uygulamayı imzalamak için bir yol ancak, ancak kullanarak anahtar deposundaki mevcut bir takma ad keytool -keyclone klonlama içerir:

aynı vardır yeni deposu girişi oluşturur Özel anahtar ve özgün giriş olarak sertifika zinciri.

Orijinal girdi, diğer adıyla tanımlanmıştır ( sağlanmamışsa "mykey" ifadesinin varsayılan değeri budur). Yeni (hedef) girişi, dest_alias tarafından tanımlanmıştır. , adresinde bir hedef diğer adı belirtilmemişse, komut satırına kullanıcı için istenir.

özel anahtar şifre deposu şifresinden farklı ise geçerli bir keypass tedarik edilirse, sonra giriş sadece klonlanmış edilecektir. Bu , diğer adlarla ilişkili özel anahtarını korumak için kullanılan paroladır. anahtar anahtar parolası komut satırında sağlanırsa ve özel anahtar parolası, anahtar deposu parolanızdan farklıdır, kullanıcı tarafından istenirse istenir. içindeki özel anahtar, klonlanmış giriş ile istenirse farklı bir parola ile korunabilir. no-new seçeneği komut satırında sağlanıyorsa, kullanıcı yeni giriş parolası için istenir (ve , klonlanmış girdinin özel anahtarı için ile aynı olmasına izin vermeyi seçebilir).

fazla bilgi:

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

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

+3

dev sitesi tüm uygulamalar için aynı sertifika kullanarak önerir. Yani, aynı anahtar deposunu kullandığım sürece, herhangi bir şifre ile herhangi bir takma ad kullanabilirim ve bu sadece bir referans olduğu için güncellemeleri dağıtmaz. Gerçek anahtar deposu önemli kısmı mı? – Roger

+1

Cevabımı daha doğru olması için yazdım. Kısacası, uygulamanızın tüm güncellemelerini imzalamak için aynı takma adı kullanmalısınız. –

+2

@Julio En iyi uygulama, yayınlamak istediğiniz tüm farklı uygulamalar için aynı takma adı kullanmaktır. Tüm Uygulamalarınız için ayrı bir takma ad oluşturmak için bir neden göremiyorum. –

İlgili konular