Autore Topic: SHA1 errata in play-store  (Letto 2471 volte)

Offline MisterHide

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
SHA1 errata in play-store
« il: 09 Maggio 2013, 10:53:38 CEST »
0
Ciao a tutti.
Ho completato la mia app (che in realtà era un aggiornamento ad una già esistente)
Mi hanno fornito la keystore (un file di nome keys)
mi hanno dato le password sia della keystore che dell'alias
ora quando vado a esportare il mio apk e a pubblicarlo (come aggiornamento) nel play-store mi dice:
Hai caricato un APK che è firmato con un certificato diverso da quello dei tuoi APK precedenti. Devi utilizzare lo stesso certificato. Gli APK esistenti sono firmati tramite certificati con queste fingerprint:
[ SHA1: 63:3E: etc. etc.
. I certificati utilizzati per firmare l'APK che hai caricato hanno queste fingerprint:
[ SHA1: 8D:84: etc. etc.

Significa che mi hanno dato il keystore sbagliato oppure ho sbagliato io qualcosa.
Credo di aver eseguito i passi correttamente ... boh
mi date qualche info per favore.
ciao e grazie.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:SHA1 errata in play-store
« Risposta #1 il: 09 Maggio 2013, 10:56:36 CEST »
+1
Se con il keystore che ti hanno fornito arrivi a firmare correttamente l'app e generare l'APK, allora temo che il keystore sia quello sbagliato.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline MisterHide

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:SHA1 errata in play-store
« Risposta #2 il: 09 Maggio 2013, 11:03:22 CEST »
0
Si riesco a generare tranquillamente l'apk
e poi se eseguo:
C:\Programmi\Java\jdk1.7.0_07\bin>keytool -list -v -keystore keys -alias pippo -storepass pluto -keypass pluto

Nome alias: pippo
Data di creazione: xxxxx
Tipo di voce: PrivateKeyEntry
Lunghezza catena certificati: 1
Certificato[1]:
Proprietario: CN=xxxxx
Autorità emittente: CN=xxxx
Numero di serie: xxxxx
Valido da: Tue Aug 02 21:26:08 CEST 2011 a: Sat Jul 26 21:26:08 CEST 2036
Impronte digitali certificato:
         MD5:  D5:49:etc . etc.
         SHA1: 8D:84:90:etc. etc.
         SHA256: B1:72:etc. etc.
         Nome algoritmo firma: SHA256withRSA
         Versione: 3

Estensioni:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [

e cosi via.

credo che i procedimenti siano quelli giusti o no?

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:SHA1 errata in play-store
« Risposta #3 il: 09 Maggio 2013, 13:38:18 CEST »
+1
APK esistenti sono firmati tramite certificati con queste fingerprint:
[ SHA1: 63:3E: etc. etc.
. I certificati utilizzati per firmare l'APK che hai caricato hanno queste fingerprint:
[ SHA1: 8D:84: etc. etc.

Ti hanno dato il keystore sbagliato, o l'hanno smarrito e pensano che rifacendolo con lo stesso alias sia la stessa cosa (e non lo è).
Spero vivamente che si siano semplicemente confusi.

Offline MisterHide

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:SHA1 errata in play-store
« Risposta #4 il: 09 Maggio 2013, 15:14:39 CEST »
0
Si lo credo anche io ... il vecchio programmatore (che fra l'altro non lavora piu in questa azienda) sta facendo il furbo   >:(

grazie per avermi rassicurato sul mio operato.



Post unito: 09 Maggio 2013, 15:35:42 CEST
Ma in un unico keystore ci possono essere + alias e quindi generare + certificati ???

no perchè solo ora mi so accorto di sta cosa nel riprovare ... ma comunque anche questo certificato non è quello che mi serve purtroppo.
« Ultima modifica: 09 Maggio 2013, 15:35:42 CEST da MisterHide, Reason: Merged DoublePost »

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:SHA1 errata in play-store
« Risposta #5 il: 09 Maggio 2013, 16:15:40 CEST »
0
Attento stai usando JDK 1.7. Android per ora è compatibile con JDK 1.6 e le firme non le vuole con l'algoritmo  "SHA256withRSA" (default col JDK 1.7) ma con "SHA1withDSA" (default col JDK 1.6). Comunque i fingerprint SHA1 sono generati in modo uguale con le due versioni del SDK e Android per il confronto delle chiavi del apk utilizza storicamente MD5 non SHA1 (anche se alcune API recenti cominciano a usare SHA1).
adb logcat | tee /tmp/logcat | grep TAG

Offline MisterHide

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:SHA1 errata in play-store
« Risposta #6 il: 09 Maggio 2013, 16:22:14 CEST »
0
Non è che ti ho capito tanto  :-o
si è vero uso jdk 1.7 quindi che dovrei fare ???
io per firmare l'applicazione ho usato eclipse (file - esporta - export android application etc.)
dici che sto sbagliando
ti prego sono frastornato
è la mia prima app e il mio primo progetto in questa azienda e ci tengo a fare bella figura

grazie.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:SHA1 errata in play-store
« Risposta #7 il: 09 Maggio 2013, 17:05:00 CEST »
0
Non è che ti ho capito tanto  :-o
si è vero uso jdk 1.7 quindi che dovrei fare ???
io per firmare l'applicazione ho usato eclipse (file - esporta - export android application etc.)

Usare Eclipse è sicuramente il modo più semplice, quindi ok.

Io fossi in te, per andare sul sicuro, toglierei JDK1.7 e metterei JDK1.6. Può darsi che non cambi niente (cioè che il keystore sia errato), ma sempre meglio togliersi il dubbio. Qui trovi i collegamenti diretti a tutto (anche al JDK6) : Android SDK | Android Developers
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:SHA1 errata in play-store
« Risposta #8 il: 09 Maggio 2013, 17:08:45 CEST »
0
Se vuoi scrivere codice per Android devi leggere la documentazione ufficiale, questi sono i requisiti richiesti:

Android SDK | Android Developers

Android è compatibile ufficiante con JDK 6 (alias 1.6), se usi JDK 7 lo fai a tuo rischio, ci possono essere delle incompatibilità.

Eclipse è un IDE, non firma nulla, il comando che esegue la firma si trova nel JDK e si chiama "jarsigner", Eclipse mette a disposizione solo un front-end grafico.
« Ultima modifica: 09 Maggio 2013, 17:10:19 CEST da iceweasel »
adb logcat | tee /tmp/logcat | grep TAG

Offline MisterHide

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:SHA1 errata in play-store
« Risposta #9 il: 09 Maggio 2013, 17:20:51 CEST »
0
ok ok ho capito il discorso di Eclipse (io intendevo che usavo l'interfaccia di eclipse x firmare)
ora mi chiedo 2 cose:

1)ho realizzato tutta la mia app con il jdk 1.7 ... è un problema questo???

2) il front-end di Eclipse utilizza il jarsigner che trovo in ..\java\jdk1.7 (nel mio caso) quindi posso io a questo punto prendere il mio file .apk e farlo rifirmare con il jarsigner del jdk 1.6 (usando naturalmente il keystore in mio possesso)? Oppure devo disinstallare JDK 7 e installare JDK 6?

grazie e scusate ancora per la mia ignoranza



Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:SHA1 errata in play-store
« Risposta #10 il: 09 Maggio 2013, 17:53:06 CEST »
+1
1)ho realizzato tutta la mia app con il jdk 1.7 ... è un problema questo???

2) il front-end di Eclipse utilizza il jarsigner che trovo in ..\java\jdk1.7 (nel mio caso) quindi posso io a questo punto prendere il mio file .apk e farlo rifirmare con il jarsigner del jdk 1.6 (usando naturalmente il keystore in mio possesso)? Oppure devo disinstallare JDK 7 e installare JDK 6?

Il primo problema non si pone, dato che Android SDK dichiara compatibilità con il JDK6 e non con JDK7.

Per il secondo io te l'ho detto cosa farei: toglierei JDK7 e metterei JDK6. Poi è chiaro che potresti anche non "disinstallare JDK7" pur usando JDK6, ma in tutta sincerità io non saprei dirti con certezza come essere sicuro di usare uno piuttosto che l'altro.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline MisterHide

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:SHA1 errata in play-store
« Risposta #11 il: 09 Maggio 2013, 18:02:39 CEST »
0
grazie bradipao

seguo il tuo consiglio, ma dato che non voglio compromettere il pc dell'ufficio, lo provo a casa

sperando che vada tutto bene e di non doverti ancora disturbare.

grazie ancora per la pazienza.

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:SHA1 errata in play-store
« Risposta #12 il: 09 Maggio 2013, 20:24:52 CEST »
0
Puoi avere più versioni di JDK, si installano in directory separate, Eclipse è in grado di rilevarle (o al massimo si configura il percorso) per poi selezionare quella desiderata per compilare.
adb logcat | tee /tmp/logcat | grep TAG

Offline MisterHide

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:SHA1 errata in play-store
« Risposta #13 il: 10 Maggio 2013, 10:33:15 CEST »
0
Allora dopo varie prove e tentativi e sbirciatine su google credo di aver capito che nel mio caso non centra la vers. del JDK infatti nel play-store lui mi dice chiaramente che sto usando un certificato diverso ma sempre SHA1 (riporto il msg di google a mia conferma)

Hai caricato un APK che è firmato con un certificato diverso da quello dei tuoi APK precedenti. Devi utilizzare lo stesso certificato. Gli APK esistenti sono firmati tramite certificati con queste fingerprint:
[ SHA1: 63:3E: etc. etc.
. I certificati utilizzati per firmare l'APK che hai caricato hanno queste fingerprint:
[ SHA1: 8D:84: etc. etc.

Il certificato in realtà io già ce l'ho ed è il file keystore che mi è stato dato dal vecchio programmatore.
Ora io l'ho analizzato sia in JDK7 che in JDK6 con il comando
c:\programmi\java\jdk1.6.0_25\bin> KEYTOOL -list -v -keystore "...path_keystore..." -alias mioalias -storepass miapw -keypass miapw

in JDK7 mi da:
Impronte digitali certificato:
         MD5:  D5:49:C0:etc. etc.
         SHA1: 8D:84: etc. etc
         SHA256: B1:72:etc. etc.
         Nome algoritmo firma: SHA256withRSA
         Versione: 3

in JDK6 mi da:
Impronte digitali certificato:
         MD5:  D5:49:C0:etc. etc.
         SHA1: 8D:84: etc. etc
         ( NON METTE LO SHA256 giustamente)
         Nome algoritmo firma: SHA256withRSA  (ma mi dice che l'algoritmo è sempre questo, cioè quello utilizzato quando è stato creato)
         Versione: 3

Quindi devo desumere che è il keystore SBAGLIATO, non il modo in cui io sto firmando l'apk ne della vers. di JDK che uso.

Scusate se sto rompendo, ma voglio la certezza prima di INVEIRE contro il tipo che mi ha dato questo benedetto keystore.

GRAZIE

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:SHA1 errata in play-store
« Risposta #14 il: 10 Maggio 2013, 20:53:03 CEST »
+1
Aggiriamo i fingersprinter dei message digest, servono come prima fase di confronto, poi viene espansa la password con tutti i campi e vengono fatti i successi confronti.

E' possibile vedere i dati della firma usata per firmare un pacchetto in una forma più human-readable in questo modo:

Codice: [Seleziona]
jarsigner -verify -certs -verbose file.apk
riporta i dati della firma e l'intervallo di validità di ogni singolo file.

Per avere le stesse informazioni dal file del certificato (ti chiederà la password ma se premi enter non verificherà la validità del file):

Codice: [Seleziona]
keytool -list -v -keystore file.key
i dati devono combaciare con quelli precedenti altrimenti sono firmati con chiavi differenti.

Se vuoi vedere il fingerprinter della chiave usata per firmare il file .apk puoi usare questo comando:

Codice: [Seleziona]
unzip -p file.apk META-INF/CERT.DSA | keytool -printcert
il comando è studiato per girare sotto Linux e in tutti i sistemi POSIX. In altri sistemi operativi devi espandere il file .apk (è in realtà un file .zip) e stampare le informazioni della chiave pubblica presente nel file "CERT.DSA" con il comando "keytool".
adb logcat | tee /tmp/logcat | grep TAG