Android anahtar deposu dosyası nedir ve ne için kullanılır?


128

Bu genel bir sorudur, ancak özellikle Android için kullanımıyla ilgileniyorum. Anahtar deposu dosyası nedir ve ne için kullanılır?

Birden çok Android uygulaması, uygulamalarını imzalamak için aynı anahtar deposunu kullanabilir mi (bir .apk'yi "imzalamak" tam olarak ne anlama geliyor?) Ve bunun (varsa) etkileri nelerdir?


1
İki konuyu karıştırıyor gibisin. Birincisi anahtar deposu ve ikincisi APK imzalama. Ayrıca Nikolay Elenkov'un Android Security Internals: Android'in Güvenlik Mimarisi İçin Derinlemesine Bir Kılavuz'a bakın .
jww

Yanıtlar:


130

Vereceğim cevap, bir anahtar deposu dosyasının, soran herhangi bir kişiye kimliğinizi doğrulamak olduğudur. Sadece .apk dosyalarını imzalamakla sınırlı değildir, kişisel sertifikaları depolamak, iletilecek verileri imzalamak ve çok çeşitli kimlik doğrulamaları için kullanabilirsiniz.

Android için onunla ne yaptığınız ve muhtemelen apk imzalamaktan bahsettiğiniz için aradığınız şey açısından bu sizin sertifikanızdır. Başvurunuzu kimlik bilgilerinizle markalaştırıyorsunuz. Birden çok uygulamayı aynı anahtarla markalayabilirsiniz, aslında yazdığınız birden fazla uygulamayı markalamak için tek sertifika kullanmanız önerilir. Hangi uygulamaların size ait olduğunu takip etmek daha kolay.

Çıkarımlar ile ne demek istediğinizden emin değilim. Sanırım bu, sertifikanızın sahibi dışında hiç kimsenin başvurunuzu güncelleyemeyeceği anlamına geliyor. Bunun anlamı, eğer onu vahşi ortamda yayınlarsanız, uygulamayı imzalamak için kullandığınız sertifikayı kaybederseniz, güncellemeleri yayınlayamazsınız, bu nedenle bu sertifikayı güvende tutun ve gerekirse yedekleyin.

Ancak, apk'leri wild'da yayınlamak için imzalamanın yanı sıra, diğer işlevlerin yanı sıra, isterseniz cihazınızı SSL üzerinden bir sunucuya doğrulamak için (ayrıca Android ile ilgili) kullanabilirsiniz.


2
Çok güzel cevap. Ayrıca, uygulamanızda "veri aktarımı" kullanacaksanız bir anahtar deposu dosyasına ihtiyacınız olduğunu da burada unutmayın!
KapteinMarshall

Anahtar deposu makinesi özel mi? Veya uygulamamızı güncellemek için herhangi bir makinede kullanabilir miyiz?
Yawar

8
İyi açıklama. KeyStorePassword, Key alias, KeyPassword'e neden ihtiyaç duyduğumuzu da açıklayabilir misiniz? Üç anahtara sahip olmak gereksiz görünüyor.
ARK

18

Android Market, yayınladığınız tüm uygulamaları bir genel / özel anahtar mekanizması kullanarak bir sertifika ile imzalamanızı gerektirir (sertifika, özel anahtarınızla imzalanır). Bu, diğer şeylerin yanı sıra, uzaktaki saldırganların uygulamanıza kötü amaçlı güncellemeleri piyasaya sürmesini engelleyen bir güvenlik katmanı sağlar (tüm güncellemelerin aynı anahtarla imzalanması gerekir).

Gönderen App-İmza Rehberi Android Geliştirici sitenin:

Genel olarak, tüm geliştiriciler için önerilen strateji, uygulamalarınızın beklenen ömrü boyunca tüm uygulamalarınızı aynı sertifikayla imzalamaktır. Bunu yapmanız için birkaç neden var ...

Aynı anahtarı kullanmanın birkaç avantajı vardır - Biri, aynı anahtarla imzalanmış uygulamalar arasında veri paylaşmanın daha kolay olmasıdır. Bir diğeri, aynı anahtarla imzalanmış birden çok uygulamanın aynı işlemde çalışmasına izin vermesidir, böylece bir geliştirici daha "modüler" uygulamalar oluşturabilir.


10

İmzalama süreci hakkında daha fazla bilgiyi resmi Android belgelerinde bulabilirsiniz: http://developer.android.com/guide/publishing/app-signing.html

Evet, aynı anahtar deposu ile birkaç uygulamayı imzalayabilirsiniz. Ancak önemli bir şeyi hatırlamanız gerekir: Play Store'da bir uygulama yayınlarsanız, onu hata ayıklama olmayan bir sertifika ile imzalamanız gerekir. Ve bir gün bu uygulama için bir güncelleme yayınlamak isterseniz, apk'yi imzalamak için kullanılan anahtar deposu aynı olmalıdır. Aksi takdirde, güncellemenizi gönderemezsiniz.


Hayır, bu yanlış. Apk'yi imzalamak için kullandığınız anahtar deposu farklı olabilir, ancak apk'yi imzalamak için kullandığınız anahtarın aynı olması gerekir. Anahtar deposu dosyası, yalnızca anahtarı ve sertifika bilgilerini depolamak için kullanılan bir dosyadır; aynı anahtar deposu dosyasında birden çok anahtar varlığına sahip olabilirsiniz.
zeleven

0

Bir keytool fikri, apk'nizi o apk'nin kaynağını belirten benzersiz bir tanımlayıcıyla imzalamaktır. Hata ayıklama için bir anahtar deposu dosyası (anladığım kadarıyla) kullanılır, böylece apk'niz üretim için apk'nizi imzalamadan bir anahtar aracı işlevine sahiptir. Yani evet, hata ayıklama amacıyla birden fazla apk'yi tek bir anahtar deposu ile imzalayabilmelisiniz. Ancak, üretime geçtikten sonra, oluşturduğunuz her apk için tanımlayıcı olarak benzersiz anahtar araçlara ihtiyacınız olacağını unutmayın.


Emülatörde veya gerçek bir cihazda hata ayıklamak için bir uygulamayı imzalamanıza gerek yoktur.
Marcus

Hatalarını ayıklamak için imzalamanız gerektiğini söylemedim ... ama anahtar deposunu anahtar aracınızın bir test uygulaması olarak kullanabilirsiniz.
Adam Storm

keytoolNe demek istediğini sanmıyorum . keytool, anahtar depoları oluşturmak için kullanılan bir java programıdır.
Otra

evet haklısın, keytool demek istediğim değil. Sanırım 'anahtar' demek istediğim. Sadece soruyu sorana, hata ayıklama için ortak bir apk anahtarına sahip olabileceğinizi açıklamaya çalışıyordum, ancak yayınladıktan sonra, her bir apk'nin düzenleme ve yükseltme için benzersiz anahtarlara sahip olması gerekecek.
Adam Storm

Benzersiz anahtarlara ihtiyaç duymazlar ... tek bir özel anahtarla birden fazla apk imzalayabilirsiniz, aslında bunu yapmanız tercih edilir. 10 uygulama için 10 farklı sertifika / anahtarı takip ettiğinizi hayal edebiliyor musunuz?
Otra
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.