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

问题描述

我有一个脚本,除其他外,它会在我创建应用程序时调用 df_events['count'] = df_events.apply(lambda r: len(df_intervals.loc[(df_intervals['start_ts']<=r['ts']) & (df_intervals['end_ts']>=r['ts'])]),axis=1) df_events['match'] = df_events['count'] > 0 为我的应用程序生成签名密钥。似乎在最近,一些系统更新导致我获得了 keytool(或底层库)的版本,在创建密钥对时,它认创建(我假设)一个 2048 位的密钥而不是旧的认值 1024 位。

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

keytool

其他一些问题将此错误报告为捆绑格式问题(损坏的图像等)的副作用,但我已经通过生成一个明确为 1024 位的新密钥来验证它是密钥本身的问题。使用 The security strength of SHA-1 digest algorithm is not sufficient for this key size 生成这样的密钥会发出以下警告:

生成的证书使用被视为存在安全风险的 1024 位 DSA 密钥。将来的更新中将禁用此密钥大小。

  1. 鉴于 Google Play 已经看到此应用内部测试版本的上传密钥,我是否可以对构建的 keytool 阶段执行一些操作,以使其在此应用中正常运行,或者执行以下操作我需要申请一个新的上传密钥?
  2. 鉴于 signBundle 已弃用 1024 位 DSA 密钥,是否有我可以传递给它的一组参数来生成将来可以正常工作的密钥?

解决方法

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

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