Was ist eine Android-Keystore-Datei und wofür wird sie verwendet?

127

Dies ist eine allgemeine Frage, aber besonders interessiert mich die Verwendung für Android. Was ist eine Keystore-Datei und wofür wird sie verwendet?

Können mehrere Android-Anwendungen denselben Keystore verwenden, um ihre Anwendung zu signieren (was genau bedeutet es, eine APK zu "signieren"?), Und welche Auswirkungen hat dies (falls vorhanden)?

Christopher Perry
quelle
1
Sie scheinen zwei Themen miteinander zu verbinden. Erstens ist der Keystore und zweitens ist die APK-Signatur. Siehe auch Nikolay Elenkovs Android Security Internals: Eine ausführliche Anleitung zur Sicherheitsarchitektur von Android .
JWW

Antworten:

130

Die Antwort, die ich geben würde, ist, dass eine Keystore-Datei dazu dient, sich bei jedem zu authentifizieren, der fragt. Es ist nicht nur auf das Signieren von APK-Dateien beschränkt, sondern Sie können damit auch persönliche Zertifikate speichern, zu übertragende Daten signieren und eine Vielzahl von Authentifizierungen durchführen.

In Bezug auf das, was Sie damit für Android machen und wahrscheinlich das, wonach Sie suchen, da Sie das Signieren von Apks erwähnen, ist es Ihr Zertifikat. Sie kennzeichnen Ihre Anwendung mit Ihren Anmeldeinformationen. Sie können mehrere Anwendungen mit demselben Schlüssel kennzeichnen. Es wird empfohlen, ein Zertifikat zu verwenden, um mehrere von Ihnen geschriebene Anwendungen zu kennzeichnen. Es ist einfacher zu verfolgen, welche Anwendungen Ihnen gehören.

Ich bin mir nicht sicher, was Sie unter Implikationen verstehen. Ich nehme an, es bedeutet, dass niemand außer dem Inhaber Ihres Zertifikats Ihre Bewerbung aktualisieren kann. Das heißt, wenn Sie es in freier Wildbahn freigeben und das Zertifikat verlieren, mit dem Sie die Anwendung signiert haben, können Sie keine Updates freigeben. Bewahren Sie dieses Zertifikat daher sicher auf und sichern Sie es bei Bedarf.

Abgesehen davon, dass Sie Apks signieren, um sie in die Wildnis zu entlassen, können Sie sie verwenden, um Ihr Gerät bei einem Server über SSL zu authentifizieren, wenn Sie dies wünschen (unter anderem auch für Android).

Otra
quelle
2
Sehr gute Antwort. Beachten Sie hier auch, dass Sie eine Keystore-Datei benötigen, wenn Sie "Push-Daten" in Ihrer App verwenden möchten!
KapteinMarshall
Ist die Keystore-Maschine spezifisch? Oder können wir es in jedem Computer verwenden, um unsere App zu aktualisieren?
Yawar
7
Gute Erklärung. Können Sie auch erklären, warum wir KeyStorePassword, Key Alias, KeyPassword benötigen? Es scheint überflüssig, drei Schlüssel zu haben.
ARK
18

In Android Market müssen Sie alle Apps, die Sie veröffentlichen, mit einem Zertifikat unter Verwendung eines öffentlichen / privaten Schlüsselmechanismus signieren (das Zertifikat wird mit Ihrem privaten Schlüssel signiert). Dies bietet eine Sicherheitsebene, die unter anderem verhindert, dass Angreifer aus der Ferne böswillige Updates für Ihre Anwendung auf den Markt bringen (alle Updates müssen mit demselben Schlüssel signiert sein).

Aus dem App-Signing-Handbuch der Android-Entwickler-Website:

Im Allgemeinen besteht die empfohlene Strategie für alle Entwickler darin, alle Ihre Anwendungen während der erwarteten Lebensdauer Ihrer Anwendungen mit demselben Zertifikat zu signieren. Es gibt mehrere Gründe, warum Sie dies tun sollten ...

Die Verwendung desselben Schlüssels hat einige Vorteile: Zum einen ist es einfacher, Daten zwischen Anwendungen auszutauschen, die mit demselben Schlüssel signiert sind. Ein weiterer Grund ist, dass mehrere mit demselben Schlüssel signierte Apps im selben Prozess ausgeführt werden können, sodass ein Entwickler "modularere" Anwendungen erstellen kann.

Alexander Lucas
quelle
10

Weitere Informationen zum Signaturprozess finden Sie in der offiziellen Android-Dokumentation hier: http://developer.android.com/guide/publishing/app-signing.html

Ja, Sie können mehrere Anwendungen mit demselben Keystore signieren. Sie müssen sich jedoch an eines erinnern: Wenn Sie eine App im Play Store veröffentlichen, müssen Sie sie mit einem Nicht-Debug-Zertifikat signieren. Und wenn Sie eines Tages ein Update für diese App veröffentlichen möchten, muss der zum Signieren der apk verwendete Keystore derselbe sein. Andernfalls können Sie Ihr Update nicht veröffentlichen.

Raphaël Titol
quelle
Nein, das ist falsch. Der Schlüsselspeicher, mit dem Sie die apk signieren, kann unterschiedlich sein, aber der Schlüssel, mit dem Sie die apk signieren, muss identisch sein. Die Keystore-Datei ist nur eine Datei, in der die Schlüssel- und Zertifikatinformationen gespeichert wurden. Sie können mehrere Schlüsselentitäten in derselben Keystore-Datei haben.
Zeleven
0

Die ganze Idee eines Keytools besteht darin, Ihre Apk mit einer eindeutigen Kennung zu signieren, die die Quelle dieser Apk angibt. Eine Keystore-Datei (soweit ich weiß) wird zum Debuggen verwendet, damit Ihre apk die Funktionalität eines Keytools hat, ohne Ihre apk für die Produktion zu signieren. Also ja, für Debugging-Zwecke sollten Sie in der Lage sein, mehrere Apks mit einem einzigen Keystore zu signieren. Aber verstehen Sie, dass Sie beim Start in die Produktion eindeutige Keytools als Kennungen für jede von Ihnen erstellte Apk benötigen.

Adam Storm
quelle
Sie müssen keine App signieren, um sie zu debuggen, weder im Emulator noch auf einem tatsächlichen Gerät.
Marcus
Ich wollte nicht, dass Sie es signieren MÜSSEN, um es zu debuggen ... aber Sie können den Keystore als Testimplementierung Ihres Keytools verwenden.
Adam Storm
Ich denke nicht, keytoolwas du meinst. keytool ist ein Java-Programm zum Generieren von Keystores.
Otra
Ja, Sie haben Recht, Keytool ist nicht das, was ich meine. Ich denke, "Schlüssel" ist das, was ich meine. Ich habe lediglich versucht, dem Fragesteller zu erklären, dass Sie einen gemeinsamen apk-Schlüssel zum Debuggen haben können, aber beim Veröffentlichen muss jeder apk eindeutige Schlüssel zum Bearbeiten und Aktualisieren haben.
Adam Storm
Sie benötigen jedoch keine eindeutigen Schlüssel ... Sie können mehrere Apks mit einem privaten Schlüssel signieren. Es wird tatsächlich bevorzugt, dass Sie dies tun. Können Sie sich vorstellen, 10 verschiedene Zertifikate / Schlüssel für 10 Apps im Auge zu behalten?
Otra