使用 2048 位密钥构建应用程序包时出现签名错误

Signing error when building an app bundle with 2048 bit key

我有一个脚本,除其他外,它调用 keytool 为我的应用程序生成签名密钥。似乎在最近,一些系统更新导致我获得了 keytool (或底层库)的版本,在创建密钥对时,默认创建(我假设)2048 位密钥而不是旧的默认值 1024 位。

对于我的最新项目,我创建了一个密钥对,签署了一个 APK 并将其上传到 Google Play。现在我试图创建一个 Bundle,但出现以下错误:

The security strength of SHA-1 digest algorithm is not sufficient for this key size

一些其他问题将此错误报告为捆绑格式问题(损坏的图像等)的副作用,但我已通过生成一个明确为 1024 位的新密钥来验证这是密钥问题本身。使用 keytool 生成这样的密钥会发出以下警告:

The generated certificate uses a 1024-bit DSA key which is considered a security risk. This key size will be disabled in a future update.

  1. 鉴于 Google Play 已经看到该应用程序内部测试版本的上传密钥,我可以对构建的 signBundle 阶段做些什么来使其正常工作对于这个应用程序,还是我需要申请一个新的上传密钥?
  2. 鉴于 keytool 已弃用 1024 位 DSA 密钥,是否有一组参数我可以传递给它以生成将来可以正常使用的密钥?

按照说明 https://support.google.com/googleplay/android-developer/contact/key,我最终生成了一个新的 2048 位 RSA 密钥,并请求 Google 将现有密钥替换为该密钥。

keytool -genkeypair -keyalg RSA -keysize 2048 ...