Anahtar deposu, sertifikalar ve diğer adları anlama


95

Anahtar deposu gerçek sertifika mı yoksa diğer ad sertifika mı?

Uygulamamı imzalamak için farklı bir takma ad kullanırsam, piyasadaki güncellemeleri bozar mı? Veya işleri karıştırmak için uygulamamı farklı bir anahtar deposu ile imzalamam gerekir mi? Ve takma adın altındaki bilgiler nereden görüntülenebilir?

Yanıtlar:


127

Keytool tarafından oluşturulan anahtar deposu dosyası , özel ve genel anahtar çiftlerini depolar. Anahtar deposunda depolanan her çift veya giriş benzersiz bir takma adla belirtilir. Kısaca:

Anahtar deposu girişi = özel + genel anahtar çifti = bir takma adla tanımlanır

Anahtar deposu, her özel anahtarı kendi parolasıyla korur ve ayrıca (muhtemelen farklı) bir parola ile tüm anahtar deposunun bütünlüğünü korur.

Örneğin, Eclipse Android aracının İmzalanmış Uygulama Paketini Dışa Aktar seçeneğini kullanarak bir Android uygulamasını imzaladığınızda, önce bir anahtar deposu seçmeniz ve ardından bu anahtar deposundan tek bir takma ad / giriş / çift seçmeniz istenir. Hem anahtar deposu hem de seçilen takma ad için şifreleri sağladıktan sonra, uygulama imzalanır ve bu takma ad için genel anahtar (sertifika) APK'ye yerleştirilir.

Şimdi sorunuzu yanıtlamak için, yalnızca 'foo' takma adıyla imzalanmış bir uygulamaya güncellemeyi aynı diğer adla tekrar imzalayarak 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.

Bununla birlikte, bir uygulamayı yeni bir takma adla imzalamanın bir yolu vardır, ancak keytool -keyclone kullanarak anahtar deposunda mevcut bir takma adı klonlamayı içerir :

Orijinal girişle aynı özel anahtara ve sertifika zincirine sahip yeni bir anahtar deposu girişi oluşturur.

Orijinal giriş, diğer adla tanımlanır (sağlanmadıysa varsayılan olarak "anahtarım" olur). Yeni (hedef) giriş, dest_alias ile tanımlanır. Komut satırında hedef takma adı sağlanmadıysa, kullanıcıdan bunu yapması istenir.

Özel anahtar parolası anahtar deposu parolasından farklıysa, giriş yalnızca geçerli bir anahtar geçişi sağlandığında klonlanacaktır. Bu, takma adla ilişkili özel anahtarı korumak için kullanılan paroladır. Komut satırında anahtar parolası sağlanmadıysa ve özel anahtar parolası, anahtar deposu parolasından farklıysa, kullanıcıdan bunu girmesi istenir. Klonlanmış girişteki özel anahtar, istenirse farklı bir şifre ile korunabilir. Komut satırında -yeni yok seçeneği sağlanmışsa, kullanıcıdan yeni girişin şifresi istenir (ve klonlanmış girişin özel anahtarı ile aynı olmasını seçebilir).

Daha 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
Geliştirici sitesi, tüm uygulamalarınız için aynı sertifikayı kullanmanızı önerir. Yani bu, aynı anahtar deposunu kullandığım sürece, herhangi bir parola ile herhangi bir takma ad kullanabileceğim ve yalnızca bir referans olduğu için güncellemeleri bozmayacağı anlamına mı geliyor? Asıl anahtar deposu önemli kısım mı?
Roger

1
Daha doğru olması için cevabımı yeniden yazdım. Kısacası, uygulamanızın tüm güncellemelerini imzalamak için gerçekten aynı takma adı kullanmanız gerekir.
Julio Gorgé

2
@Julio En iyi uygulama, geliştirici sitesinin önerdiği gibi, yayınlamak istediğiniz tüm farklı Uygulamalar için aynı takma adı kullanmak mıdır? Tüm Uygulamalarınız için ayrı bir takma ad oluşturmak için bir neden göremiyorum.
Tony Chan

@ JulioGorgé-Hey, sadece R takma adı büyük / küçük harf duyarlı olduğunu bilmek istedim .. ??
İsim Nilay

@ JulioGorgé aynı takma adı mı yoksa aynı anahtarı mı kastediyorsunuz? Takma ad yalnızca bir addır, takma adı yeniden adlandırabilirim. Uygulamadaki anahtarlar (genel anahtarlar) eşleştiği sürece bir güncelleme yayınlayabilirsiniz.
Dheeraj Bhaskar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.