2016-05-10 65 views
5

Mam aplikację na Androida (i jej magazyn kluczy), która została po raz pierwszy utworzona za pomocą Adobe Air. Dawno temu firma przestawiła się na zwykły zestaw SDK do systemu Android, aby opracować aplikację, ale ponieważ aplikacja była już w fazie produkcji, magazyn kluczy, którego używamy, wciąż pozostaje ten sam (stworzony przez Adobe Air).Keystore SHA1 różni się od cert.rsa SHA1 z APK

użyłem keytool wyodrębnić SHA1 w Miejscach Google API, mam coś wzdłuż tych linii:

Alias name: <alias_name> 
Creation date: Jan 11, 2015 
Entry type: PrivateKeyEntry 
Certificate chain length: 1 
Certificate[1]: 
Owner: CN=<company_name>, OU=, O=, C=US 
Issuer: CN=<company_name>, OU=, O=, C=US 
Serial number: <lotsofnumbers> 
Valid from: Mon Mar 28 14:08:17 IST 2011 until: Sat Mar 29 14:08:17 IDT 2036 
Certificate fingerprints: 
    MD5: ..:8D:F7 
    SHA1: ..:E6:69 
    SHA256: ..:38:9A 
    Signature algorithm name: SHA1withRSA 
    Version: 3 

Extensions: 

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

ten SHA1 (Wykańczanie przez E6: 69) nigdy nie pracował w Miejscach Google API więc sprawdziłem co było CERT.RSA apk zawierał i wyglądała prawie tak samo z wyjątkiem odcisków palców certyfikatu:

Valid from: Mon Mar 28 14:08:17 IST 2011 until: Sat Mar 29 14:08:17 IDT 2036 
Certificate fingerprints: 
    MD5: ..:E1:30 
    SHA1: ..:72:74 
    SHA256: ..:9D:6D 
    Signature algorithm name: SHA1withRSA 
    Version: 3 

Extensions: 

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

Ten SHA1 (ukończeniu przez 72:74) działało idealnie i udało mi się użyć API Miejsc Google w produkcji. Ale nie rozumiem, dlaczego te dwa odciski palców certyfikatów są różne.

Mam 1000% pewności, że to ten sam plik kluczy, więc jak to możliwe?

Kiedy patrzę na androida klucz debugowania info jest skonstruowany w ten sam sposób, ale Rozszerzenia są różne:

Alias name: androiddebugkey 
Creation date: Oct 26, 2014 
Entry type: PrivateKeyEntry 
Certificate chain length: 1 
Certificate[1]: 
Owner: CN=Android Debug, O=Android, C=US 
Issuer: CN=Android Debug, O=Android, C=US 
Serial number: 3bddeb55 
Valid from: Sun Oct 26 21:03:56 IST 2014 until: Tue Oct 18 22:03:56 IDT 2044 
Certificate fingerprints: 
    MD5: ..:01:17 
    SHA1: ..:00:77 
    SHA256: ..:32:93 
    Signature algorithm name: SHA256withRSA 
    Version: 3 

Extensions: 

#1: ObjectId: 2.5.29.14 Criticality=false 
SubjectKeyIdentifier [ 
KeyIdentifier [ 
0000: <weird hexa number and characters> 
0010: <weird hexa number and characters> 
] 
] 

Podsumowując moje pytania:

  1. Jak to możliwe, SHA1 zrobić nie pasuje?
  2. Czy to może być różnica między rozszerzeniami?
  3. Jak mogę użyć keytool (lub innego narzędzia), aby pokazać mi odpowiedni SHA1?
  4. Czy mogę pozbyć się tego rozszerzenia podpisywania kodu, aby powrócić do "zwykłego magazynu kluczy Android"?

Odpowiedz

2

Korzystanie android studio można dostać klucz SHA1 w następujący sposób

zakładka

Goto Gradle na prawej stronie pracowni następnie

Kliknij projectname->: app-> Tasks-> android-> signingReport (podwójne kliknięcie)

To będzie drukować SHA1 i MD5 klawisz na konsoli RUN

+0

o ile wiem, ta metoda będzie tylko pokazać SHA1 dla debugowania kluczy – yogipriyo

2

Będzie 2 magazynów kluczy. debugowanie i wydawanie. używasz klucza debugowania, myślę.

Jeśli korzystasz z wydania. Sprawdź, czy apikey jest poprawny zarówno w debugowaniu jak i zwolnieniu xml. ponieważ normalnie nie zobaczysz wydania google xml.

Utworzono poprawny klucz Api, ale nie umieszczono go w pliku xml wydania.

4

Jak to możliwe, że SHA1 nie pasują?

SHA-1 certyfikat papilarnych jest zdefiniowana przez Keystore, prawdopodobnie zapisałeś swoją aplikację z innego Keystore lub Twój kluczy została zmodyfikowana lub została ponownie utworzona, ja doświadczyłem tego sam, z moim debugowania kluczy.

Jak mogę użyć keytool (lub innego narzędzia), aby pokazać mi odpowiedni SHA1?

pamiętać podczas tworzenia Keystore (który zawiera unikalny SHA-1 certyfikat) do podpisania aplikacji dla produkcji, należy zachować ten Keystore w bezpiecznym miejscu, a to musi być użyty do podpisania Ci aplikacje dla Google Playstore

Jeśli Twój SHA-1 (zakończenie E6: 69) nigdy nie działało w Google Places API, prawdopodobnie odcisk palca certyfikatu SHA-1 nie jest zarejestrowany w https://console.developers.google.com/.

Na przykład w przypadku interfejsu API Miejsc Google muszę zarejestrować swoją aplikację za pomocą certyfikatu SHA-1 mojego pliku kluczy debugowania (zazwyczaj znajduje się on pod numerem C:\Users\[USER]\.android\debug.keystore) oraz za pomocą certyfikatu SHA-1 mojego magazynu kluczy produkcyjnych.

przejdź do Konsoli programisty Google https://console.developers.google.com/apis Nie można zdefiniować wiele SHA-1 związany z nazwą pakietu aplikacji, na przykład można zdefiniować dla swojego Debug Keystore a drugi dla produkcji kluczy. enter image description here

mogę się założyć, że podpisał z różnych magazynów kluczy, ponieważ mają Diferent daty utworzenia:

Creation date: Jan 11, 2015 
Creation date: Oct 26, 2014