Vibeloy
Registrieren
Alle Beiträge

Blog

So erhalten Sie Ihren SHA-1- und SHA-256-Fingerabdruck (keytool, Firebase)

Veröffentlicht: Aktualisiert: 7 Min. Lesezeit

Was ist ein SHA-1/SHA-256-Fingerabdruck, und wo wird er benötigt?

Ein Fingerabdruck ist ein Hash-Wert, der aus dem Zertifikat abgeleitet wird, das Ihre App signiert; er beweist, welches Zertifikat ein bestimmtes Paket erzeugt hat. Jedes Keystore-/Alias-Paar für eine Android-App erzeugt seinen eigenen Fingerabdruck — dieselbe App, mit einem anderen Keystore signiert, ergibt einen anderen SHA-1.

Dieser Wert wird am häufigsten an drei Stellen benötigt: beim Hinzufügen einer Android-App in der Firebase-Konsole (für Funktionen wie Google Sign-In, Phone Authentication, App Check), beim Einschränken eines Maps-SDK-for-Android-API-Schlüssels nach Paketname + SHA-1 in der Google Cloud Console, und in der assetlinks.json-Datei, die Sie auf Ihrem Server für die automatische Verifizierung von Android App Links hosten.

SHA-1 wird seit langem für klassische Szenarien wie Google Sign-In und die Einschränkung von Maps-API-Schlüsseln angefordert; SHA-256 ist für die App-Links-Verifizierung (assetlinks.json) und einige neuere Firebase-Funktionen erforderlich. Der Befehl keytool -list -v gibt beide in derselben Ausgabe aus, sodass ein einziger Befehl abdeckt, welcher auch immer verlangt wird.

Den SHA aus Ihrem Debug-Keystore erhalten

Android Studio und Flutter erzeugen automatisch einen Debug-Keystore für die lokale Entwicklung, der mit festen Angaben ausgeliefert wird: Er liegt unter ~/.android/debug.keystore auf macOS/Linux und unter C:\Users\<IhrBenutzername>\.android\debug.keystore unter Windows; der Alias lautet immer androiddebugkey, und sowohl das Store- als auch das Key-Passwort sind android.

Mit diesen Angaben lautet der Befehl: keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android. Die Ausgabe zeigt Zeilen „SHA1:" und „SHA256:", beide formatiert als durch Doppelpunkte getrennte Hex-Paare.

Dieser Fingerabdruck funktioniert nur für Debug-Builds; der Debug-Keystore ist zudem maschinenspezifisch — der debug.keystore jedes Entwicklers und jeder CI-Maschine erzeugt einen anderen SHA-1. Arbeiten Sie im Team, muss jedes Mitglied (und CI) seinen eigenen Debug-SHA-1 separat zu Firebase hinzufügen; das ist die häufigste Ursache für „Google Sign-In funktioniert bei mir, aber nicht bei meinem Teamkollegen".

Den SHA aus Ihrem Release-/Upload-Keystore erhalten

Wenn Sie bereits einen Release- oder Upload-Keystore haben (wie man einen mit keytool erstellt, behandeln wir in unserem anderen Leitfaden), hat der Befehl dieselbe Form — richten Sie ihn einfach auf Ihre eigene Datei und Ihren Alias: keytool -list -v -keystore /pfad/zu/ihrer/upload-keystore.jks -alias upload. Er fragt nach dem Store-Passwort, das Sie beim Erstellen des Keystores festgelegt haben.

Sie können diese Angaben aus Ihrer Datei android/key.properties auslesen (storeFile, keyAlias); das Passwort interaktiv einzugeben, wenn danach gefragt wird, statt es auf der Kommandozeile zu übergeben, vermeidet, dass es im Klartext in Ihrer Shell-Historie verbleibt.

Der so erzeugte SHA-1/SHA-256 gehört zu Ihrem „Upload Key". Ist Ihre App bei Play App Signing registriert (seit 2021 für neue Apps verpflichtend), stimmt dieser Wert möglicherweise NICHT mit der tatsächlichen Signatur des an Nutzer verteilten Pakets überein — der nächste Abschnitt behandelt das.

Unter Play App Signing: Debug vs. Upload vs. App Signing Key (Fehler Nr. 1)

Mit aktiviertem Play App Signing signieren Sie die AAB mit Ihrem eigenen Upload Key, aber Google Play signiert das Paket vor der Verteilung an Nutzer erneut mit seinem eigenen „App Signing Key". Das Ergebnis: Das Zertifikat der tatsächlichen App, die Nutzer aus dem Store herunterladen, stimmt NICHT mit dem SHA-1 überein, den Sie aus Ihrem lokalen Upload-Keystore extrahieren.

Das ist genau der häufigste Fehler: Ein Entwickler fügt Firebase den SHA-1 aus dem lokalen Upload-Keystore hinzu, alles funktioniert auf dem eigenen Gerät und in internen Test-Builds, aber bei echten Nutzern, die aus dem Play Store herunterladen, scheitert Google Sign-In oder die Maps API stillschweigend — weil das Store-Paket ein anderes Zertifikat trägt.

Holen Sie sich die korrekten Werte vom Bildschirm Protected with Play > Play Store protection > Manage Play app signing in der Play Console, wo zwei separate Zertifikate aufgeführt sind: das „App signing key certificate" (die echte Signatur, die Nutzer erhalten) und das „Upload key certificate". Beide zeigen auf diesem Bildschirm ihre eigenen SHA-1-, SHA-256- und MD5-Werte an.

Die praktische Lösung: Firebase erlaubt es, mehr als einen Fingerabdruck pro Android-App zu registrieren. Fügen Sie den SHA-1 des Debug-Keystores, den SHA-1 des Upload Keys UND den SHA-1 des App Signing Keys gleichzeitig hinzu; so authentifizieren sich lokale Entwicklung, direkt als APK verteilte interne Test-Builds und echte Installationen aus dem Play Store alle korrekt.

Den SHA-Fingerabdruck zu Firebase hinzufügen

Gehen Sie zu Firebase Console > Project settings (das Zahnrad-Symbol) > „Your apps", suchen Sie die Karte Ihrer Android-App, öffnen Sie das Feld „SHA certificate fingerprints", fügen Sie dort den SHA-1- oder SHA-256-Wert aus der keytool-Ausgabe hinzu und speichern Sie. Sie können so viele Fingerabdrücke wie nötig zur selben App-Karte hinzufügen.

Kopieren Sie beim Einfügen die keytool-Ausgabe genau so, wie sie gedruckt wird (durch Doppelpunkte getrennte Hex-Paare); Firebase akzeptiert den Wert mit oder ohne Doppelpunkte, aber das manuelle Neueingeben lässt Raum für Abschreibfehler. Für manche SHA-abhängige Funktionen wie Google Sign-In oder App Check wird empfohlen, nach dem Hinzufügen eines Fingerabdrucks die aktualisierte google-services.json-Datei erneut herunterzuladen und wieder in Ihr Projekt einzufügen.

Da der Vibeloy Keystore-Tresor Ihre Keystore-Datei und Passwörter Ende-zu-Ende-verschlüsselt speichert, können Sie Ihre SHA-1/SHA-256-Werte mit einem Klick aus dem Tresor ansehen und kopieren, ohne jedes Mal, wenn Sie keytool benötigen, nach Dateipfad und Passwort suchen zu müssen. Dies ist eine Premium-Funktion von Vibeloy.

Häufige Fragen

Warum unterscheiden sich meine Debug- und Release-SHA-1-Werte?
Weil sie von unterschiedlichen Keystores stammen. Der Debug-Keystore wird automatisch erzeugt und ist maschinenspezifisch, während der Release-/Upload-Keystore der dauerhafte Schlüssel ist, den Sie selbst erstellt haben. Es ist normal, dass sich ihre Fingerabdrücke unterscheiden; Sie müssen beide separat zu Firebase hinzufügen.
Sollte ich SHA-1 oder SHA-256 verwenden?
Verwenden Sie den, den die von Ihnen integrierte Funktion verlangt; im Zweifel fügen Sie beide hinzu. Der Befehl keytool -list -v gibt bereits beide in derselben Ausgabe aus, sodass Sie nicht für jeden einen separaten Befehl ausführen müssen.
Welchen SHA sollte ich unter Play App Signing zu Firebase hinzufügen?
Fügen Sie sowohl den SHA Ihres Upload Keys als auch den SHA des App Signing Keys hinzu — beide erhalten Sie vom Bildschirm Protected with Play > Play Store protection > Manage Play app signing in der Play Console. Nur den Wert aus Ihrem lokalen Upload-Keystore hinzuzufügen, lässt die Funktion bei echten Nutzern, die aus dem Play Store herunterladen, fehlschlagen.
Ich erhalte „command not found", wenn ich keytool ausführe — was soll ich tun?
keytool wird mit dem JDK ausgeliefert und kann nicht direkt gefunden werden, wenn es nicht in Ihrem PATH liegt. Unter macOS/Linux ist das JDK meist bereits im PATH; falls nicht, verweisen Sie auf das bin-Verzeichnis des von Android Studio installierten JDK. Unter Windows ist es am zuverlässigsten, flutter doctor -v auszuführen und in der Ausgabe die Zeile „Java binary at:" zu suchen, um das bin-Verzeichnis dieses JDK zu finden; die Annahme „%JAVA_HOME%\bin\keytool" kann irreführend sein, wenn die Variable nicht gesetzt ist oder mehrere JDKs installiert sind.
Wie lange dauert es, bis ein zu Firebase hinzugefügter Fingerabdruck aktiv wird?
Er wird in der Regel innerhalb weniger Minuten aktiv. Für manche Funktionen wie Google Sign-In oder App Check müssen Sie nach dem Hinzufügen eventuell die aktualisierte google-services.json-Datei erneut herunterladen und wieder in Ihr Projekt einfügen; andernfalls erkennt die alte Datei den neuen Fingerabdruck nicht.