当前位置: 首页 > 知识库问答 >
问题:

Google Play创建无密钥存储的应用程序签名密钥

周滨海
2023-03-14

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

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

  1. 来自Android Studio
  2. 来自Java密钥库
  3. 来自非Java密钥库或自定义密钥格式

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

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

共有1个答案

戴凯歌
2023-03-14

下面是从.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

请注意,名称是必需的,因为它稍后将用作别名。我花了一段时间才弄明白。

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-encrypt-private-key文件。

搞定了!

 类似资料:
  • 我刚刚开始使用应用程序包。我已经在仪表板的部分设置了两个证书(签名证书和上载证书)。 我已经构建了一个应用程序包,并用上传证书签名,但是当我在下上传包时(这实际上是我切换到应用程序包的原因),它说:

  • 我正在intellij和Gradle下开发android应用程序。并使用以下方式生成密钥库文件: 然后使用build.gradle中的密钥库文件: 任务“:MyExample:PackageRelease”执行失败。 无法从密钥存储区读取密钥

  • 我需要构建一个iOS应用程序,其中将创建PGP密钥,以便加密和解密某些消息。 由于我对iOS中的PGP加密是新手,所以有一些库可以让我创建、保存和访问PGP密钥,以及使用这些密钥进行加密和解密。 我已经在JAVA中使用bouncy castle和OpenPGP的RSA算法实现了一个后端和Android版本,但是我需要在iOS版本中做同样的操作。这意味着在iOS中创建的密钥应该与在Android版本

  • 11:12:17,289信息[org.apache.Coyote.http11.http11protocol](MSC服务线程1-2)JBWeb003001:Coyote http/1.1正在初始化:http-/0.0.0.0:8080 11:12:17,297信息[org.apache.Coyote.http11.http11protocol](MSC服务线程1-2)JBWeb003000:Co

  • 我有一个现有的密钥库,里面有一个密码,还有几个不同密码的密钥,供我导出并上传到Google Play的不同应用程序使用。 现在,我最近导入了一个应用程序的项目,对它做了一些重大的修改,我正在尝试使用相同的密钥库和选择相同的别名/密码来导出它,就像我最初创建它时一样。 问题是,在我选择密钥别名并输入密钥密码的步骤之后,我看到“错误:无法恢复密钥”。 我怀疑我可能输入了一个错误的密钥密码(注意密钥库密

  • 问题内容: 使用&等redis expire 命令时,在某些情况下根本不需要键来保存值,因为 生存时间 就是这样。 __ 但是,redis要求任何键具有值。 如果您不想阅读它,最合理的使用价值是什么? 问题答案: 谁说您实际上应该在Redis密钥中存储任何内容? 空字符串是redis密钥的完美有效值,并且它是最短的一个: