android - Google Play 创建没有密钥库的应用签名密钥
问题描述
在 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 接受的加密格式。似乎很奇怪,没有记录的方法可以从证书和私钥变为加密的应用程序签名密钥?
解决方案
以下是从.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
文件。
完毕!
推荐阅读
- python - 删除 .csv 中的所有行,除了第一个在列中具有重复单元格的行
- ruby-on-rails - 为什么当我回复评论时,我只能看到第一条评论的答案?
- nginx - meidawiki 和 nginx 中的好 URL 给出错误:FastCGI 在标准错误中发送:“主要脚本未知”同时从上游读取响应标头
- vba - VBA Access 2013 表单:如何刷新?
- java - 多键鼠标点击
- css - 具有缩放和移动效果的滑块
- arrays - 浮点数数组不存在 PostgreSQL 运算符
- gradle - 为什么 gradle-clojure 插件会跳过 compileClojure 任务?
- python - 损失函数 Keras out_dim > 1
- joomla - Joomla - 方便的模板升级