Google Play 创建没有密钥库的应用签名密钥

Posted

技术标签:

【中文标题】Google Play 创建没有密钥库的应用签名密钥【英文标题】:Google Play create app signing key without keystore 【发布时间】:2021-06-22 09:48:37 【问题描述】:

在 Google Play 控制台中,您可以上传加密的应用签名密钥,以将现有应用转换为使用 Google 托管的应用签名: https://support.google.com/googleplay/android-developer/answer/9842756?hl=en#zippy=%2Cexisting-apps

提供了 3 种不同的方法,它们都产生相同的加密密钥,但从不同类型的输入开始:

    来自 Android Studio 来自 Java 密钥库 来自非 Java 密钥库或自定义密钥格式

我正在迁移以前由我的安全部门管理的 Google Play 帐户,我唯一的输入是 PEM 格式的证书和随附的私钥。

如果查看方法 3,这实际上只提供了一个 pepk-source.jar 文件,据说您可以使用该文件编译您自己的 Java 工具,将您的密钥转换为 Google 接受的加密格式。似乎很奇怪,没有记录的方法可以从证书和私钥变成加密的应用签名密钥?

【问题讨论】:

【参考方案1】:

以下是从.cer + .pem 到加密应用签名密钥的说明。

下面,为简单起见,我在所有命令中使用xxx 作为标识符。根据需要将xxx 替换为您想要的名称:

输入:

xxx.cer - 证书 xxx.pem - 私钥 (PEM)

我们没有创建一个工具来使用pepk.jar 将私钥转换为加密的应用签名密钥,而是从 cer+pem 对创建一个密钥库,然后按照说明从密钥库:

1.将.cer+.pem转换成.pkcs12

$ openssl pkcs12 -inkey xxx-private-key.pem -in xxx.cer -name xxx -export -out xxx.pkcs12

请注意,name 是必需的,因为它稍后将用作alias。这花了我一段时间 想办法。

2。从 pkcs12 文件创建密钥库:

$ keytool -importkeystore -srckeystore xxx.pkcs12 -srcstoretype pkcs12 -alias xxx -destkeystore xxx.keystore

3.运行 pepk 工具将 keystore 转换为加密密钥

使用在 Google Play 控制台中找到的公钥(此处被截断):

$ java -jar pepk.jar --keystore=xxx.keystore --alias xxx --output xxx-encrypted-private-key --encryptionkey=eb10fe8... 

4.上传生成的xxx-encrypted-private-key 文件。

完成!

【讨论】:

以上是关于Google Play 创建没有密钥库的应用签名密钥的主要内容,如果未能解决你的问题,请参考以下文章

如何启用 Google Play 应用签名

Google Play 应用签名 - 密钥哈希不匹配

在没有“应用签名”的情况下为 Google Play 商店中的应用设置新的上传密钥

加固后,上传play store, 在 google play store 下载应用安装后,打开签名校验失败

无法在 Google Play 中更新应用(apk 在调试模式下签名)。可能是密钥库问题

使用 Google Play 上传密钥签署 APK