谷歌Play应用签名流程证书

3
我想了解Play应用签名的签名过程,因此有几个问题。
  1. 我正在使用Google地图API,为什么需要在控制台上添加App签名密钥证书的SHA-1证书指纹?为什么我不能使用在我的电脑本地生成的SHA 1?
  2. 我从发布中生成了provate_key.pepk,我需要做什么?
  3. deploy_cert.der的目的是什么?
  4. upload_cert.der的目的是什么?
请问你能否向我解释正确的签名应用程序的过程以及如何使用它?
同时,在这里
现有应用程序->步骤2->5说明:选择最适合您发布流程的导出和上传选项,并上传现有的应用签名密钥。
我没有看到上传现有应用签名密钥的选项...

有兴趣进一步了解该过程。尽管我一直使用通过Android Studio在本地计算机上生成的密钥库来签署我的应用程序,但从未上传过我的密钥库/证书到门户网站。 - Tommy Leong
1个回答

6
在Play商店中,应用签名的过程如下所示:

enter image description here

Google Play签名使用两个密钥。

  • 上传密钥
  • 应用程序签名密钥

上传密钥

简而言之:Google使用此密钥来识别apk/bundle的上传者。

上传到Play商店时,此密钥用于给apk/bundle签名。此密钥让Android知道应用程序更新是真实的,并来自原始作者。

upload_cert.der是上传密钥的公钥。

应用程序签名密钥

此密钥用于对安装在用户设备上的APK进行签名。您可以让Google管理此密钥。

deployment_cert.der是应用程序签名密钥的公钥。

因此,回答您的问题,

如果您的设备正在运行使用上传密钥(开发者密钥)签名的应用程序,则API控制台中的指纹应与上传密钥匹配;反之,如果您的设备中的应用程序使用应用签名密钥签名,则需要拥有相同的指纹。通常从Android Studio构建的已签名APK / Bundle都使用您选择的上传密钥进行签名。从Play商店安装的应用程序使用应用签名密钥

  • 请确保其安全性,这是Google在推送更新时识别作者所需的。

  • 请参见应用签名密钥部分。

  • 请参见上传密钥部分。


  • 如果应用程序既没有使用“上传密钥”也没有使用“应用程序签名密钥”,而是使用本地密钥库,那么怎么办呢?这与您所解释的两个不同的事情吧? - Tommy Leong
    1
    @TommyLeong,使用Google Play签名时需要这两个密钥。为了调试,所需的签名密钥会自动生成在$HOME/.android/debug.keystore中,但这是不安全的,只适用于调试目的(您无需每次构建代码时输入密码、用户名和相关信息)。Google Play商店不接受使用调试证书签名的应用程序发布到他们的商店。 - All Іѕ Vаиітy
    1
    @AllІѕVаиітy,你知道吗——如果我允许Google签署我的二进制文件,有没有办法让我知道包的签名?我使用context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES)来获取签名并解密一些之前用它加密的数据。但是如果我允许Google签署,我的安全性会失败吗? - Tertium
    @Tertium 用加密问题往往涉及到信任的问题。如果您使用只有 Google 管理和知道的密钥来加密数据,这意味着 Google 知道公钥和私钥,Google 可以解密您的数据,所有其他人也可以解密,如果他们破解了密钥,即计算出正确的私钥。如果您使用自己的密钥,问题是是否有人可以破解您的密钥,包括 Google。如果您相信 Google 永远不会做出像在不应该使用用户密钥的事情一样的事情,那么您可以使用 Google 的密钥。 - Reijo Korhonen

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接