Keystore kurtarma çabaları

Standard

Herkese merhaba, yeni bir yazı ile karışınızdayım. Yazımızın içeriğinden bahsetmek gerekirse geliştirmiş olduğum uygulamalardan bir tanesinde yeni android sürümü yollamam gerekti ancak keystore dosyamı bulamadım! Aman allahım kabus gibi..

Öncelikle bu yazıya geldiğinize göre siz de bu konuda muzdarip olduğunuzu düşünüyorum, geçmiş olsun… Büyük geçmiş olsun hemde!

Sizlerle bu sancılı işlem başıma geldiğinde yaşadığım süreci adım adım paylaşacağım, keyifle okuyup biraz kafanızı dağıtmanızı öneririm.

Projemin kodlarından gördüğüm ve hatırladığım kadarı ile aynı alias, store pass ve key pass ile yeniden keystore dosyası oluşturdum.

keytool -genkey -v -keystore xxx.keystore -alias altinpiyasasi -storepass PAROLANIZ -keypass PAROLANIZ -keyalg RSA -validity 36500

Daha sonra uygulamayı paketledim ve store a yüklediğim zaman eski fingerprint ile yenisi uyuşmadığı yönünde hata verdi.

You uploaded an APK that is signed with a different certificate to your previous APKs. You must use the same certificate. Your existing APKs are signed with the certificate(s) with fingerprint(s):
[ SHA1: F0:AD:DC:99:7A:21:1C:A3:42:00:4B:17:A9:01:5F:61:DA:42:80:41 ]
and the certificate(s) used to sign the APK you uploaded have fingerprint(s):
[ SHA1: 16:8D:FC:96:11:A7:B9:00:67:75:BA:B3:DB:6B:72:C2:8A:FE:46:CF ]

Eski hash ile yenisi uyuşmuyordu. Dedim herhalde bilgileri yanlış hatırladım. Sonra eski bir iki farklı kombinasyon denemeye karar kıldım ancak paketle, yükle… Upload ettikten sonra uyarı uyarı versin felan zaman kaybı oluyordu ikinci denememden sonra bu işlemi bilgisayarımda yapmaya karar verdim.

keytool -list -keystore xxx.keystore

Yukarıdaki şekilde oluşturmuş olduğunuz keystore dosyasının hash karşılığına ulaşabilirsiniz. Aklımda böylelikle sunucudaki hash değerine ulaşana kadar deneyecektim ama 3-5 deneme sonrası bunun daha kolay bi yolu olmadı diye düşündüm…

Hemen eski disklerimi açtım ve eski dosyalar içinde projenin yedeğini aradım taradım, bi tane yakın zamanlı yedek buldum ve içinde keystore dosyası mevcuttu ama bunun parolası neydi kim bilir?

Bunun için brute force yöntemi ile olası tüm parolaları denemek üzere aklımda ki muhtemel tüm parolaları bir txt dosyasında toparladım ve sonucunda kolayca keystore dosyamın parolasına ulaştım.

İlgili keystore dosyası ile paketleyip yüklediğim zaman başımdan aşağı kaynar sular döküldü çünkü o da muhtemelen farklı zamanda denediğim bir keystore olsa gerek, hash bilgisi uyuşmadı…

Umutlarım git gide soluyordu ama hayatımda pes etmek hiç yapıma uygun değildir. Başladığım işin sonuna kadar gitme konusunda takıntılı bir insan olabilirim, yarım bırakmayı veya pes etmeyi sevmiyorum…

Google Play Console üzerinde Release Management / App signing altından tekrar uygulama imzası için kullanılan özel anahtarım(app signing private key) ile upload anahtarımın sertifikasını (certificate of upload key) oluşturup yüklemeyi denedim.

java -jar pepk.jar --keystore=xxx.keystore --alias=xxx --output=xxx_encrypted_private_key --encryptionkey=eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a
keytool -export -rfc -keystore xxx.keystore -alias xxx -file xxx_certificate.pem

The private key does not match the certificate we know for this app.

Boiling level git gide artıyordu, çıldırmamak elde değildi..

Bir girişimim daha başarısız olduktan sonra kafamda lamba yandı; belki de ben doğru parola ve alias ile deniyordum ama başka bir sıkıntı vardı??

Hemen bilgisayarımda aynı bilgiler ile iki farklı zamanda iki adet keystore oluşturdum ve gördüm ki iki keystore hash bilgisi de farklı yani paket oluştururken içine random bir değer de ekliyor. Yani bunca denemem boş yere imiş, google play store’a ilk yüklediğim keystore hash bilgisi ile bire bir uyuşan hash yakalamam mümkün değildi ve tüm emeklerim bir anda uçup gitti…

Ama saçma geliyordu bu kadar uygulama var, kimsenin başına gelmiyor mu bu durum? Bir çözümü olmalı diyorum kendi kendime…

Son çare artık support team ile yazıştım ve gelen cevap içler acısı…

Hi there, Thanks for contacting Google Play Developer Support.

I understand you’re not able to use the original keystore for your app, com.siyyah.XXX.

Unless you are enrolled in Google Play app signing, this app is not, the only solution to this issue is to publish a new app with a new package name and a new key. In order to transition existing users to the new app, you’ll need to update the original app’s description with a link to the new app and unpublish the original app.

I absolutely understand this is a significant inconvenience, however, due to security concerns Google does not keep a copy of your keystore and at this time we do not support the deletion of apps or the re-use of package names.

You can read through this article in the Android Studio Help Center for more information about keystores.

Please let me know if you have any other questions.

Regards,
Charlotte
Google Play Developer Support

Tahminimce bazı keyword ile gelenci talebiniz otomatik olarak yollanıyor, 72 saat içinde yanıt beklerken cevap çok hızlı döndü

Google dan gelen dönüş ile artık umutlarım tükenmişti…

Belkide ilk söylemem gereken şeyi, siz sevgili okura son olarak söylüyorum;
Ne yazık ki keystore dosyanızı kaybederseniz uygulama kurtarılamıyor…

Yeni bir uygulama yapıp göndermeniz gerekli…

Sizlere önerim, tüm keystore dosyalarınızı bir yerde veya her projenin keystore dosyasını kendi içinde saklayınız. Ne olur ne olmaz, ben yandım başkaları yanmasın 🙂

Hepinize güzel, sağlıklı, mutlu günler dilerim…

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir