2014-12-04 89 views
8

Po zmianie typu magazynu kluczy z PKCS12 na JKS wystąpił problem z uzyskaniem tego samego odcisku palca.Dlaczego odcisk palca jest inny w moim nowo podpisanym apk?

Aby dokonać zmiany, utworzyłem nowy magazyn kluczy JKS, usunąłem klucz, który był w nim, i zaimportowałem klucz, którego potrzebuję, z pliku .p12. Po weryfikacji klucz z keytool -keystore keystore.jks -list wyprowadza odcisk palca:

(SHA1): 21: ... :39 

który jest odcisk palca pliku .p12, a fingerprint google mówi moje poprzednie pliki APK zostały. Kiedy podpisać mój apk z tego certyfikatu i spróbuj przesłać go do playstore, to mówi, że certyfikat ma odcisk palca:

SHA1: C7: ... :AF 

kiedy badać zarówno oryginalny plik .p12 i złożyć nowe .jks z kluczy Odkrywcy wymieniają zarówno SHA1: C7: ... :AF jak i odcisk palca.

Edit1:

keytool -keystore disneyquiz.p12 -storetype PKCS12 -alias 1 -list 
Enter keystore password: 
1, Jun 4, 2014, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 21: ... :39 


keytool -keystore quizstore.jks -list 
Enter keystore password: 

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 1 entry 

key0, Dec 3, 2014, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 21: ... :39 

New Apk

keytool -printcert -file CERT.RSA  
Owner: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US 
Issuer: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US 
Serial number: 36663939343135303a31343636393337363665663a2d38303030 
Valid from: Tue Jun 03 19:29:37 EDT 2014 until: Sat Jun 04 19:29:37 EDT 2039 
Certificate fingerprints: 
     MD5: F6: ... :72 
     SHA1: C7: ... :AF 
     SHA256:  7C:D6: ... :67:B9 
     Signature algorithm name: SHA1withRSA 
     Version: 3 

Extensions: 

#1: ObjectId: 2.5.29.37 Criticality=false 
ExtendedKeyUsages [ 
    codeSigning 
] 

Original APK

keytool -printcert -file CERT.RSA  
Owner: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US 
Issuer: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US 
Serial number: 36663939343135303a31343636393337363665663a2d38303030 
Valid from: Tue Jun 03 19:29:37 EDT 2014 until: Sat Jun 04 19:29:37 EDT 2039 
Certificate fingerprints: 
     MD5: AD: ... :CA 
     SHA1: 21: ... :39 
     SHA256: D2:7D: ... :8E:47 
     Signature algorithm name: SHA1withRSA 
     Version: 3 

Extensions: 

#1: ObjectId: 2.5.29.37 Criticality=false 
ExtendedKeyUsages [ 
    codeSigning 
] 

Edit 2:

Oryginalny .p12 plik został wygenerowany z Adobe Air Certificate generat lub, a oryginalna apk została skompilowana z Adobe Flash Professional CC. Po przetestowaniu certyfikatów i próbach podpisania pliku APK na różne sposoby, myślę, że jedyną możliwością jest to, że proces podpisywania programu Flash Professional w jakiś sposób zmienia zgłoszony odcisk palca podczas podpisywania pliku APK. CERT.RSA w flashu stworzył META-INF apk dopasowuje CERT.RSA nowego apk. Mam nadzieję, że ktoś ma sugestię, jak podpisać mój nowy apk, abym mógł zaktualizować moją aplikację.

+0

Czy jesteś pewien, że wybierasz właściwy certyfikat? Jaka jest lista twoich certyfikatów? – Braiam

+0

W magazynie kluczy znajduje się tylko jeden certyfikat, a p12 to tylko jeden certyfikat. Nie rozumiem, dlaczego odciski palców pokazują się inaczej, gdy są sprawdzane na różne sposoby. – Jimbo145

Odpowiedz

1

Mam ten sam problem. Czy znajdziesz rozwiązanie?

W tym wierszu poleceń mam taki sam odcisk palca niż apk. Być może, to może pomóc:

openssl pkcs12 -in certificat.p12 -nodes -passin pass:PASSWORD | openssl x509 -fingerprint 
2

problem jest z Gradle, podczas podpisywania za pomocą klawisza importowane z kluczem p12.

kroki, aby naprawić:

  1. zmienić rozszerzenie apk zip
  2. Dont rozpakować plik APK, ale otworzyć go z zamkiem, klikając dwukrotnie
  3. Usuń katalog META-INF
  4. zmienić rozszerzenie z zip na apk
  5. podpisać apk z polecenia cmd, używając poniższego polecenia:

jarsigner -keystore -storepass

  1. suwak algina w apk

zipalign [f] [v] infile.apk outfile.apk

z wyrównanie jest liczbą całkowitą, która definiuje granice wyrównania bajtów. Musi to zawsze wynosić 4 (co zapewnia wyrównanie 32-bitowe), albo w rzeczywistości nic nie robi.

Udało mi się opublikować jedną z moich pomyślnie wykonanych czynności

+0

Pracowałem dla mnie. Dziękuję Ci. – ilyabreev

+0

Jednak nadal nie odpowiada na pytanie. – ilyabreev