Pytanie Keystore i Aliasy - czy istnieje wiele aliasów?


Podczas eksportowania podpisanej aplikacji Android za pomocą Eclipse, czy jest jakiś cel używania wielu aliasów?

Według oficjalny przewodnik na temat podpisywaniazaleca się podpisywanie wszystkich aplikacji za pomocą tego samego certyfikatu, aby umożliwić aplikacjom współdzielenie danych, kodu i aktualizację w sposób modułowy.

Zakładając, że "alias", "klucz" i "certyfikat" są w zasadzie zamienne w tym kontekście, czy istnieje powód, dla którego ktoś mógłby chcieć używać różnych aliasów dla wszystkich swoich aplikacji? Mogę sobie tylko wyobrazić, że zwiększa to bezpieczeństwo twoich aplikacji, w tym sensie, że złamany klucz / hasło nie zagraża wszystkim. Czy są inne powody?

Czy wygenerowany klucz jest zależny od nazwy aliasu? Innymi słowy, jeśli zmienisz nazwę aliasu, ale nie hasło, czy wygenerowany certyfikat będzie inny?


18
2018-04-19 12:39


pochodzenie


Niedawno wpadłem na to pytanie i dla tych, którzy szukają, uważam, że przyjęta odpowiedź jest błędna. Proszę zobaczyć moją odpowiedź poniżej dla wyjaśnienia. - Tony Chan


Odpowiedzi:


Popraw mnie, jeśli się mylę, ale jeśli zobaczysz ta odpowiedź na podobne pytanie widzisz, że certyfikat rzeczywiście zależy od konkretnego "aliasu" (w twoim magazynie kluczy), z którym chcesz się podpisać.

Przeczytaj uważnie odpowiedź i zobaczysz, że "plik kluczy" zawiera "aliasy" (które w rzeczywistości są parami prywatnymi + kluczami publicznymi). Kiedy podpisujesz apk, to "klucz publiczny" jest faktycznym certyfikatem, który jest osadzony.

Dlatego przy aktualizacji aplikacji zawsze powinieneś używać tego samego "aliasu", a nie tylko tego samego "magazynu kluczy". Jeśli chodzi o to, dlaczego deweloperzy mieliby wiele "pseudonimów" w swoim magazynie kluczy, nie mam pewności co do korzyści innych niż to, co napisaliście wraz z innymi.

Jedynym sposobem, w jaki możesz podpisać się przy użyciu innego aliasu, jest klonowanie poprzedniego, co sugeruje również odpowiedź.

Potwierdziłem również, że podpisanie pliku APK z różnymi aliasami (z tego samego magazynu kluczy) spowoduje wygenerowanie różnych plików APK podpisywanie podpisów który powinien być dowodem, że różne "aliasy" s = inny certyfikat. Jak uzyskać podpisanie sig (<- uwaga: nie wiem, do czego odnosi się metoda Trace.i, zamiast tego użyłem Log.i)


14
2017-10-12 09:35



Muszę się zgodzić, że zaakceptowana odpowiedź może zostać źle zrozumiana. Po dalszych badaniach rozumiem, że "alias" jest po prostu "nazwą" kluczowego wpisu w magazynie kluczy. Utworzenie klucza o aliasie "klucz1" i innego klucza w tym samym magazynie z aliasem "klucz2" nie powoduje, że są one zamienne. Chociaż można zmienić alias (nazwę) lub hasło na którymkolwiek z nich i nie wpływać na ich podpis, to ostatecznie są to dwa oddzielne klucze. NIE są one aliasami do samego magazynu kluczy. - JRomero
Potwierdzam, że podpisywanie za pomocą pojedynczego pliku kluczy, ale różnych aliasów tworzy różne podpisy podpisu. Nawet Android Marketplace nie pozwala na dodawanie wielu plików APK podpisanych przy użyciu różnych aliasów. - Grigori A.
@Turbo Wprowadziłem poprawkę do zaakceptowanej odpowiedzi, która moim zdaniem czyni sprawę bardziej przejrzystą. - Bruno Bronosky
Kiedy przed laty przyszedłem do tego wątku, zgodziłem się z tobą. Teraz, gdy mam więcej doświadczenia, znajduję problemy z twoją odpowiedzią. Jesteś (w uczciwości, tak jak stwierdził PO) zakładając, że Alias to kluczowa para. Jednak odpowiedź, o której mówisz, stwierdza, że ​​alias jest po prostu identyfikatorem "wpisu magazynu kluczy" (vel: klucz). Chciałbym, aby twoja odpowiedź została zmieniona na s / alias / key / g i zawierałaby jedną definicję dla aliasu. Alias - Dowolny i zmienny identyfikator pary kluczy lub kluczy i jej zawartości. (Uwaga: możesz dodać samodzielny klucz publiczny i używać go wyłącznie do weryfikacji podpisów). - Bruno Bronosky


Pamiętaj, że podpisując aplikacje za pomocą różnych kluczy, rezygnujesz z "zgodności z sygnaturami" między aplikacjami.

Fragment Android - podpisywanie aplikacji - strategie podpisywania

System Android zapewnia wymuszanie uprawnień oparte na sygnaturach,   aby aplikacja mogła udostępniać funkcje innej aplikacji   który jest podpisany za pomocą określonego certyfikatu. Podpisując wiele   aplikacje z tym samym certyfikatem i oparte na sygnaturach   kontroli uprawnień, twoje aplikacje mogą udostępniać kod i dane w   bezpieczny sposób.


7
2018-03-12 18:46



Właśnie uzyskałem 2 głosy na dół i brak komentarzy. Dzięki! Społeczność SO docenia Twój wkład. - Bruno Bronosky
Ale czy naprawdę potrzebują interoperacyjności. Jak możemy zrozumieć w przypadku Gmaila i skrzynki odbiorczej. Muszą ze sobą rozmawiać. Ale czy kalkulator i powiedz, że Whatsapp potrzebuje interoperacyjności? W przypadku 2 różnych typów aplikacji, które mogą nigdy nie chcieć się ze sobą komunikować, jaka jest korzyść z podpisywania ich tym samym kluczem? - kirtan403
"Ale czy naprawdę potrzebują interoperacyjności?" To do ciebie należy decyzja. Chcę tylko, żebyś miał informacje, abyś mógł podjąć świadomą decyzję. Pracowałem dla firmy medialnej, która miała dziesiątki stacji telewizyjnych i radiowych. Każdy z nich miał wiele aplikacji (transmisje na żywo, pogoda, ruch, budzik itp.), Ponieważ zostały opracowane przez różne zespoły lub dostawców. Musieli współpracować. NIE CHCESZ wydawać aplikacji, a później zdać sobie sprawę, że współpraca nie jest możliwa bez konieczności instalowania przez użytkowników innej podpisanej aplikacji (aka: nie jest to aktualizacja, połącz użytkownika z nową instalacją) - Bruno Bronosky
Naprawdę przydatna informacja - i choć nieco styczna do faktycznego pytania, dość istotna dla tematu. Po prostu, aby poinformować, że przynajmniej jeden członek społeczności SO docenia Twój wkład! - Thailandian


Robiłem testy i chociaż wydaje się, że ma znaczenie klucz, którego używasz w magazynie kluczy, zmiana aliasu na kluczu i nazwa pliku magazynu kluczy nie wydają się mieć znaczenia dla słuchawki. Jeśli jesteś ciekawy, zmieniłem pseudonim na keytool-iui, który dostałem tutaj: http://code.google.com/p/keytool-iui/

Aby odpowiedzieć na PO, powiedziałbym, że jest to przydatne, jeśli pracujesz w dużej firmie z wieloma oddziałami, które piszą własne aplikacje. Więc Widgety Wilsona mogą mieć plik kluczy wilsonwidgets.keystore, może to być wewnętrzny dział z kluczem "widżetów", dział z kluczem "widgetdelivery" i inny dział z kluczem "hrdepartment". Każdy dział może uniemożliwić innym działom aktualizację aplikacji, ale sama firma ma wszystkie klucze przechowywane w jednym magazynie kluczy, które można zarchiwizować w jednej lokalizacji.

Osobiście podpisuję każdą aplikację innym kluczem, przechowując je wszystkie w tym samym magazynie kluczy. Robię to, więc jeśli zdecyduje się kupić ode mnie jedną z moich aplikacji, mogę zerwać ten klucz i przekazać go bez konieczności sprzedaży całej partii lub regenerowania kluczy dla innych aplikacji. Realistycznie ... marnuję czas i wysiłek ... westchnienie


3
2018-06-12 18:54



Pamiętaj, że podpisując aplikacje za pomocą różnych kluczy, rezygnujesz z "zgodności z sygnaturami" między aplikacjami. Nie mogłem dopasować mojego komentarza tutaj, więc napisałem to jako odpowiedź. I tak będę głosował na ciebie </ karma> - Bruno Bronosky