Изменение ключа подписи Android (не распространяемое приложение Play Store)

У меня есть следующий сценарий:

У нас есть важное приложение, которое распространяется через загрузку apk с наших собственных серверов (не из магазина Play). Приложение обновляет себя и другое приложение, загружая и устанавливая apk (с намерением Android). Оба этих apk подписаны ключом подписи кода нашей компании.

Эта проблема:

Срок действия ключа подписи истекает через 5 дней, и мы не можем его обновить, так как это 2048-битный RSA. Согласно некоторым документам форума CA/Browser:

Базовые требования к подписи кода

Но если мы изменим закрытый ключ на 3072-битный RSA, андроид откажется от установки (это я понимаю):

Package com.whatever.myapp signatures do not match previously installed version; ignoring!

Есть ли способ сделать это менее болезненным для пользователей, чем удаление и повторная установка приложения? (Оно распространяется по всей стране, среди более чем 1000 клиентов, которые не могут этого сделать).

Изменение имени пакета будет означать чистую базу данных для клиентов, поэтому это невыполнимое решение. Правда ли, что я не могу получить действительную подпись для 2048-битного закрытого ключа RSA? Есть ли решения?

Заранее спасибо!


person szegedi    schedule 05.03.2021    source источник
comment
и мы не могли его продлить -- откуда вы его взяли?   -  person CommonsWare    schedule 05.03.2021
comment
@CommonsWare e-szigno.hu , они сказали: поставщики, которым доверяют производители браузеров и операционных систем, могут только выдавать подпись кода сертификаты, как минимум 3072-битный код RSA, начиная с 2021 года. янв. 1.   -  person szegedi    schedule 05.03.2021
comment
и они связали документацию, которую я связал выше, в вопросе :(   -  person szegedi    schedule 05.03.2021


Ответы (1)


Срок действия ключей не истекает, но срок действия сертификатов истекает (или, по крайней мере, у них есть поле NotValidAfter). При этом Android не проверяет действительность сертификата, он только обеспечивает, чтобы сертификат оставался одним и тем же байт за байтом, поэтому технически наличие устаревшего сертификата не повлияет на ваших пользователей.

Если вы все же хотите изменить ключ, вам придется использовать поворот ключа (https://source.android.com/security/apksigning/v3), которая появилась в Android 9, поэтому только пользователи Android 9+ смогут проверить подпись с помощью новый ключ, в то время как пользователи старых устройств будут продолжать проверять подпись старого ключа.

person Pierre    schedule 11.03.2021
comment
Это то, что мы заметили за последние несколько дней, что подписание с устаревшим сертификатом не влияет на установку на Android. (пробовали с несколькими версиями и несколькими поставщиками) - person szegedi; 12.03.2021