2016-11-17 1 views
5

Bis jetzt hatte ich meine APKs mit dem folgende Verfahren wurde Unterzeichnung:apksigner nicht durch ein Passwort zu akzeptieren

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore {keystore-file} {apk-file} {keystore-alias}

aber ich versuche, das neue apksigner-Tool zu verwenden, und ich kann es nicht immer, da es an der Arbeit sagt mir, dass das Passwort ungültig ist. Was unmöglich ist, weil ich es mehrfach gemacht habe, mit dem Jarsigner und nicht mit dem Apsigner. Die Befehle, die ich versucht habe, sind die folgenden:

apksigner sign --ks {keystore-file} {apk-file}

apksigner sign --ks {keystore-file} --ks-key-alias {keystore-alias} {apk-file}

Nun ist die seltsamste Teil kommt, wenn ich einen neuen Schlüsselspeicher erstellt dies zu testen, und mit dieser neuen Schlüssel es funktioniert. Also verstehe ich nicht, was der Unterschied ist. Hier sind die Informationen aus dem Aufruf von "keytool -v -list -keystore {keystore-file}" auf beiden.

Produktion Schlüsselspeicher (I Text in Fall entfernt haben dies gefährlich ist):

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 1 entry 

Alias name: {keystore-alias} 
Creation date: Apr 4, 2016 
Entry type: PrivateKeyEntry 
Certificate chain length: 1 
Certificate[1]: 
Owner: CN={removed-text}, OU={removed-text}, O={removed-text}, L=Unknown, ST=Unknown, C=Unknown 
Issuer: CN={removed-text}, OU={removed-text}, O={removed-text}, L=Unknown, ST=Unknown, C=Unknown 
Serial number: {removed-text} 
Valid from: Mon Apr 04 12:39:50 CEST 2016 until: Fri Aug 21 12:39:50 CEST 2043 
Certificate fingerprints: 
    MD5: {removed-text} 
    SHA1: {removed-text} 
    SHA256: {removed-text} 
    Signature algorithm name: SHA256withRSA 
    Version: 3 

Extensions: 

#1: ObjectId: 2.5.29.14 Criticality=false 
SubjectKeyIdentifier [ 
KeyIdentifier [ 
0000: {removed-text} 
0010: {removed-text} {removed-text}          .... 
] 
] 



******************************************* 
******************************************* 

Neuer Test Schlüsselspeicher:

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 1 entry 

Alias name: app 
Creation date: Nov 17, 2016 
Entry type: PrivateKeyEntry 
Certificate chain length: 1 
Certificate[1]: 
Owner: CN=Foobar, OU=Foobar, O=foobar, L=Unknown, ST=Unknown, C=Unknown 
Issuer: CN=Foobar, OU=Foobar, O=foobar, L=Unknown, ST=Unknown, C=Unknown 
Serial number: 448c7afc 
Valid from: Thu Nov 17 11:40:26 CET 2016 until: Mon Apr 04 12:40:26 CEST 2044 
Certificate fingerprints: 
    MD5: 3E:29:C0:3C:30:B4:DC:E0:A5:94:1D:2E:E9:86:58:CA 
    SHA1: 3D:09:B4:42:A2:7C:14:C7:3E:54:33:0E:AB:75:2E:F1:19:23:00:FA 
    SHA256: 7F:E0:51:F1:6A:53:45:56:42:B9:F9:38:92:69:81:7A:DA:71:FF:44:51:15:7F:F9:B4:1C:AA:2B:53:4A:89:72 
    Signature algorithm name: SHA256withRSA 
    Version: 3 

Extensions: 

#1: ObjectId: 2.5.29.14 Criticality=false 
SubjectKeyIdentifier [ 
KeyIdentifier [ 
0000: BC 1B E6 C4 6D 25 01 70 CA AC 81 34 81 4B AE 41 ....m%.p...4.K.A 
0010: 10 DF D8 13          .... 
] 
] 



******************************************* 
******************************************* 
+0

Was ist die Fehlermeldung/Ausnahme, die Sie Formular Apsigner bekommen? Auch die Bereitstellung des Passworts für apksigner über --ks-pass pass: und --key-pass pass: in verschiedenen Kombinationen ändern alles? Probieren Sie --ks-pass und no --key-pass und --key-pass und no --ks-pass aus. –

+0

@AlexKlyubin Ok, der Fehler, den ich bekam, war eine einfache "Passwortverifizierung fehlgeschlagen", aber nachdem ich versucht habe, was du gesagt hast, das Passwort in der cmd, bekam ich "Nicht unterstützte Passwortspezifikation für Keystore Passwort".Ich weiß nicht, welches die Spezifikation für Passwörter ist, aber ich änderte das Passwort in eine einfachere Version (ohne Sonderzeichen) und jetzt funktioniert es. Ich verstehe nicht, warum sie das Format ändern würden. Wie auch immer, das löst mein Problem, wenn Sie also den Kommentar zu einer Antwort verschieben wollen, werde ich dies als akzeptiert markieren. Wenn Sie etwas darüber sagen können, warum dies geschieht, wäre das ein gutes Plus: D. Vielen Dank. –

+0

Ich bin froh zu hören, dass Sie einen Workoon gefunden haben. Haben Sie die Sonderzeichen entfernt oder sie durch ASCII-Äquivalente ersetzt (z. B. "a mit Umlaut" wird zu "a")? –

Antwort

1

Die ursprüngliche Antwort auf die Bemerkungen der Frage zu finden, Ich bewege es hierher, um die Frage als beantwortet zu markieren.

Obwohl ich immer noch nicht 100% der Details sicher bin, war das Problem das Passwort, das ich für meinen Schlüsselspeicher verwendete Sonderzeichen (* und!) Verwendete. Nachdem das Passwort in ein alphanumerisches Format geändert wurde, wurde das Problem gelöst. Es sieht also so aus, als würde apksigner nicht dasselbe Format für Passwörter wie jarsigner akzeptieren.

8

Wow, ich wusste nicht, dass Sie Passwörter im Keystore ändern können.

Wie auch immer ich hatte dieses genaue Problem und es stellt sich heraus, dass Sie nicht Ihr Passwort ändern müssen. Der Trick ist, Optionen zu setzen

--ks-pass stdin --key-pass stdin 

Dies ist angeblich Standardverhalten, aber in meinem Fall ist es funktioniert nur, wenn ich diese ausdrücklich einbezogen.

Führen Sie den Befehl aus, Sie werden aufgefordert, Kennwörter einzugeben, und es funktioniert auch mit Zeichen wie!.

+0

Leider habe ich es ausprobiert und funktioniert immer noch nicht, ich benutze den Charakter ¡in diesem Fall, aber ich denke immer noch, es ist frustrierend, dass dies nirgendwo dokumentiert ist, das ich finden könnte. Immer noch arbeitet jarsigner mit dem gleichen Passwort, es ist also kein Problem mit dem Passwort. –

+1

Arbeitete für mich, kann mir keinen Weg vorstellen, wie dies passieren könnte, wenn sie den Wert "stdin" als "Standard" implementieren würden. –

4

es auf diese Weise verwendet

./apksigner sign --ks test.jks --ks-key-alias test --ks-pass pass:testtest --key-pass pass:testtest Test_Aligned.apk 
1

ich nicht/Kommentar noch abstimmen, aber +1 für maxs fix:

./apksigner sign --ks test.jks --ks-key-alias test --ks-pass pass:testtest --key-pass pass:testtest Test_Aligned.apk 

Voranstellen meiner Passwörter mit "Pass" für mich gearbeitet

--ks-pass pass:MyPassword 
--key-pass pass:MyPassword 
Verwandte Themen