Давно не создавал ключи подписи для приложений, а когда попытался, то напоролся на интересную ошибку про невозможность создания ключа с разными паролями на хранилище и на сам ключ. Покопавшись в интернетах быстро выяснил, что это
известная проблема с Android Studio 4.2 и в качестве эльфийского костыля предлагается... сделать пароль на хранилище и на ключ одинаковыми. "Отличный совет", который полностью противоречит
официальной документации. Более глубокие раскопки показали, что студия версии 4.2 работает на JDK 11, в которой для keystore по умолчанию используется формат PKCS12. Соответственно keytool и пытается создать именно его. Если попробовать сделать это из терминала, то можно увидеть вот такое сообщение:
Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified -keypass value.
Ок, но как же так... Оказалось, что "
проблема" известна аж с 2013го года и все работает как ожидается. Потому что (
цитирую): Файл pkcs12 с различными паролями на хранилище и на ключ является (почти) бесполезным, потому что другие тулы (MSIE, Firefox и т.д.) принимают такие файлы только с одинаковыми паролями на ключ и хранилище. Поэтому keytool работает таким образом.
Собственно почему мы на это все попали только сейчас? Все просто. Google продолжает держать уверенный курс по направлению "подальше от Oracle" и всячески выпиливает всякие проприетарные штуки из Android окружения. А формат JKS как раз является проприетарным.
Сконвертировать свои старые JKS ключи в модный, молодежный PKCS12 можно так:
keytool -importkeystore \
-srckeystore keystore.jks \
-destkeystore keystore.p12 \
-srcstoretype JKS \
-deststoretype PKCS12 \
-deststorepass password \
-srcalias alias \
-destalias alias