Почему отпечатки пальцев отличаются в моем недавно подписанном apk?
У меня проблема с получением того же отпечатка пальца после того, как я изменил тип хранилища ключей с PKCS12 на JKS.
Чтобы внести изменения, я создал новое хранилище ключей JKS, удалил находящийся в нем ключ и импортировал нужный мне ключ из файла.p12. Когда проверить ключ с keytool -keystore keystore.jks -list
выводит отпечаток пальца:
(SHA1): 21: ... :39
который является отпечатком файла.p12, и Google Fingerprint говорит, что мои предыдущие apks были. Когда я подписываю свой apk этим сертификатом и пытаюсь загрузить его в playstore, он говорит, что сертификат имеет отпечаток:
SHA1: C7: ... :AF
Когда я проверяю исходный файл.p12 и новый файл.jks с помощью KeyStore Explorer, они оба перечисляют SHA1: C7: ... :AF
как отпечаток пальца.
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
Новый Апк
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
]
Оригинальный 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
]
Изменить 2:
Исходный файл.p12 был создан с помощью генератора сертификатов Adobe Air, а исходный файл apk был скомпилирован с помощью Adobe Flash Professional CC. После тестирования сертификатов и попыток подписать APK различными способами, я думаю, что единственная возможность состоит в том, что процесс подписи Flash Professional каким-то образом изменяет отпечаток пальца при подписании apk. CERT.RSA во флеш-файле apk META-INF соответствует CERT.RSA нового apk. Надеюсь, у кого-то есть предложение относительно того, как подписать мой новый apk, чтобы я мог обновить свое приложение.
4 ответа
Проблема с gradle при подписывании с использованием ключа, импортированного из ключа p12.
шаги для исправления:
- изменить расширение apk на zip
- не разархивируйте apk, но откройте его с помощью zip, дважды щелкнув
- удалить папку META-INF
- изменить расширение с zip на apk
- подпишите ваш apk из командной строки cmd используя команду ниже
jarsigner -keystore -storepass
- zip algin apk
zipalign [-f] [-v] infile.apk outfile.apk
выравнивание является целым числом, которое определяет границы выравнивания байтов. Это всегда должно быть 4 (что обеспечивает 32-битное выравнивание), иначе оно фактически ничего не делает.
Мне удалось переиздать один из моих успешно с помощью этих шагов
У меня такая же проблема. Вы нашли решение?
С этой командной строкой у меня такой же отпечаток, как у apk. Возможно, это может помочь вам:
openssl pkcs12 -in certificat.p12 -nodes -passin pass:PASSWORD | openssl x509 -fingerprint
Это случилось и со мной, оказалось, что мой ключ был преобразован из файла.p12 и генерировал подпись, отличную от предыдущей. Запуск этого инструмента на Android-APK, созданном и подписанном, решил проблему для меня, так как он выполняет шаги, описанные Dev для вас https://github.com/SierraII/morphthis
На случай, если кто-то снова столкнется с этой проблемой: вам ДОЛЖЕН использоваться jarsigner из JDK 7, чтобы это работало (и вы должны использовать jarsigner с вашим сертификатом p12 вместо преобразованного сертификата). Для получения дополнительной информации см. эту тему: