Android-Keystore überprüfen — SHA1/SHA256 schnell mit keytool auslesen

Android-Keystore überprüfen — SHA1/SHA256 schnell mit keytool auslesen

Einleitung

Bei der Android-App-Entwicklung und dem Release ist häufig eine Überprüfung der Keystore-Informationen erforderlich.

  • Google Play Console benötigt SHA1/SHA256
  • Firebase-Konfiguration benötigt Fingerprints
  • Signatur korrekt überprüfen

Hier werden die Befehle zusammengefasst, die in diesen Situationen verwendet werden.


Grundlagen: Alle Keystore-Informationen überprüfen

keytool -list -v -keystore your-keystore.jks

Nach Eingabe des Passworts werden folgende Informationen angezeigt:

Keystore-Typ: JKS
Keystore-Provider: SUN

Anzahl der Einträge im Keystore: 1

Alias-Name: mykey
Erstellungsdatum: 01.01.2024
Eintragstyp: PrivateKeyEntry
Länge der Zertifikatkette: 1
Zertifikat[1]:
  Inhaber: CN=My App, OU=Development, O=My Company
  SHA1:   AB:CD:EF:12:34:56:...
  SHA256: 01:23:45:67:89:AB:...

SHA1 und SHA256 werden als Fingerprints registriert, die auf Firebase und Play Console verwendet werden.


Nur den Alias-Namen überprüfen

keytool -list -keystore release.jks

Wenn Sie -v weglassen, wird eine vereinfachte Anzeige eingeblendet. Dies ist hilfreich, wenn Sie nur den Alias-Namen und den Typ überprüfen möchten.


Überprüfen, mit welchem Schlüssel eine APK signiert wurde

Für eine bereits veröffentlichte APK können Sie die Signaturinformationen überprüfen.

apksigner verify --print-certs app-release.apk

Oder:

keytool -printcert -jarfile app-release.apk

Damit können Sie die SHA1/SHA256 der APK überprüfen. Verwenden Sie diesen Befehl, um zu überprüfen, ob „diese APK mit dem richtigen Schlüssel signiert wurde".


debug.keystore überprüfen

Der von Android Studio automatisch generierte debug.keystore befindet sich am Standardort.

Speicherort:

C:\Users\Benutzername\.android\debug.keystore   (Windows)
~/.android/debug.keystore                        (Mac/Linux)

Überprüfungsbefehl:

# Windows
keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore

# Mac/Linux
keytool -list -v -keystore ~/.android/debug.keystore

Standardinformationen:

Element Wert
Passwort android
Alias androiddebugkey
Gültigkeitsdauer 30 Jahre

build.gradle-Konfiguration überprüfen

Wenn Sie überprüfen möchten, welcher Keystore zum Erstellen verwendet wird, schauen Sie sich den Abschnitt signingConfigs in app/build.gradle an.

Groovy (build.gradle):

signingConfigs {
    release {
        storeFile file("release.jks")
        storePassword "xxxxx"
        keyAlias "mykey"
        keyPassword "xxxxx"
    }
}

Kotlin (build.gradle.kts):

signingConfigs {
    create("release") {
        storeFile = file("release.jks")
        storePassword = System.getenv("STORE_PASSWORD")
        keyAlias = "mykey"
        keyPassword = System.getenv("KEY_PASSWORD")
    }
}

Statt Passwörter direkt zu schreiben, ist es sicherer, sie in CI/CD-Umgebungen aus Umgebungsvariablen zu lesen.


keytool wird unter Windows nicht gefunden

'keytool' is not recognized as an internal or external command

Dieser Fehler tritt auf, wenn das bin-Verzeichnis des JDK nicht zum PATH hinzugefügt wurde.

Lösung 1: Mit vollständigem Pfad ausführen

"C:\Program Files\Java\jdk-17\bin\keytool.exe" -list -v -keystore release.jks

Lösung 2: Zum PATH hinzufügen (dauerhaft)

  1. Öffnen Sie Systemeigenschaften → Umgebungsvariablen
  2. Fügen Sie C:\Program Files\Java\jdk-17\bin zu Path hinzu
  3. Starten Sie das Terminal neu

Lösung 3: Das JDK von Android Studio verwenden

"C:\Program Files\Android\Android Studio\jbr\bin\keytool.exe" -list -v -keystore release.jks

Android Studio enthält ein JDK, daher können Sie dieses immer verwenden, wenn es installiert ist.


Zusammenfassung

Zweck Befehl
Alle Keystore-Informationen überprüfen keytool -list -v -keystore xxx.jks
Nur Alias-Namen überprüfen keytool -list -keystore xxx.jks
APK-Signatur überprüfen apksigner verify --print-certs xxx.apk
debug.keystore überprüfen keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore

Wenn SHA1/SHA256 für Firebase-Konfiguration oder Play Console erforderlich ist, können Sie diese Befehle verwenden, um schnell Informationen abzurufen.