Problembeschreibung:
Wir versuchen, eine vorhandene Android-App (com.clsreview.clsreview) bei Google Play App Signing zu registrieren. Wir verfügen über unseren ursprünglichen, gültigen privaten Schlüssel und sein Passwort und können App-Bundles (.aab) erfolgreich mit Gradle signieren. Allerdings gelingt es dem offiziellen pepk.jar-Tool von Google immer wieder nicht, unseren privaten Schlüssel zu verschlüsseln, und es wird eine javax.crypto.BadPaddingException zurückgegeben. Dies blockiert vollständig unsere Fähigkeit, sich für App Signing anzumelden und somit unsere Anwendung im Play Store zu aktualisieren.
Kontext:
- App-Paket: com.clsreview.clsreview (vorhandene, veröffentlichte App)
- Schlüsseltyp: 2048-Bit-RSA-Schlüssel in einem JKS/PKCS12-Keystore.
- Schlüssel Status: Nicht verloren, das Passwort ist bekannt und wird mit Keytool, OpenSSL und dem Android Gradle-Plugin überprüft.
- Versuch mit Original JKS Keystore:
- Ergebnis: pepk.jar v1.0 ist mit „Passwortüberprüfung fehlgeschlagen“ fehlgeschlagen (irreführend).
- Sauberer PKCS12-Keystore über OpenSSL erstellt:
- Wir haben private_key.pem und Certificate.pem mit OpenSSL erfolgreich aus unserem ursprünglichen Keystore extrahiert und die Schlüsselgültigkeit und das Passwort bestätigt.
- Wir haben dann mit OpenSSL aus diesen PEM-Dateien einen makellosen new_keystore.p12 erstellt.
- Versucht mit Clean new_keystore.p12 und der neuesten pepk.jar:
- Wir haben die neueste pepk.jar von der App Signing-Seite der Google Play Console heruntergeladen.
- Der genaue Befehl, den wir ausgeführt haben, war:
Code: Select all
java -jar pepk.jar \
--keystore=new_keystore.p12 \
--alias=key0 \
--output=pepk-output.txt \
--include-cert \
--rsa-aes-encryption \
--encryption-key-path=encryption_public_key.pem \
--keystore-pass=pass:YOUR_PASSWORD \
--key-pass=pass:YOUR_PASSWORD
- Konsistenter Fehler: Dieser Befehl schlägt immer noch mit der BadPaddingException fehl.
- Dies ist die vollständige erhaltene Fehlerverfolgung:
Code: Select all
Error: Unable to export or encrypt the private key
java.io.IOException: keystore password was incorrect
at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2092)
at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:243)
at java.base/java.security.KeyStore.load(KeyStore.java:1479)
at
com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.loadKeystore(KeystoreHelper.j
ava:53)
at
com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.getKeystore(KeystoreHelper.ja
va:39)
at
com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.run(ExportEncr
yptedPrivateKeyTool.java:207)
at
com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.main(ExportEnc
ryptedPrivateKeyTool.java:165)
Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry:
javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used
during decryption.
... 7 more
- Java-Umgebungstests:
- Wir haben den Befehl sowohl mit OpenJDK 17 (unserer primären Umgebung) als auch mit OpenJDK 11 (einer gängigen LTS-Version) getestet. Die exakt gleiche BadPaddingException bleibt in beiden JDKs bestehen.
- Versuchte manuelle Python-Implementierung:
- Wir haben versucht, Python-Skripte zu schreiben, um die Funktionalität von pepk.jar zu replizieren, aber diese scheiterten aufgrund der kryptografischen Komplexität.
- Hat jemand diese spezielle javax.crypto.BadPaddingException erfolgreich überwunden, wenn pepk.jar mit einem nachweislich gültigen Schlüssel verwendet wurde? Wenn ja, was war die Lösung?
- Gibt es bekannte spezifische Inkompatibilitäten zwischen pepk.jar (sogar den neuesten Versionen) und PKCS12-Dateien, die von bestimmten OpenSSL-Versionen oder bestimmten Schlüsselformaten (z. B. 2048-Bit-RSA-Schlüsseln älterer Herkunft) generiert wurden?
- Gibt es eine zuverlässige, dokumentierte Lösung, wenn wir über die Rohdateien private_key.pem und Encryption_public_key.pem verfügen? Methode oder ein vorhandenes Tool (außer pepk.jar), das die verschlüsselte .pepk-Datei, die für die Play App Signing-Registrierung erforderlich ist, korrekt generieren kann?
- Gibt es alternative Methoden zum Registrieren einer vorhandenen App bei Play App Signing, wenn das offizielle pepk.jar-Tool nachweislich aufgrund eines Fehlers ausfällt?
Vielen Dank für Ihre Zeit und Ihr Fachwissen.
Mobile version