apk文件中的签名和证书有什么区别?

时间:2017-09-19 06:18:37

标签: android certificate apk signature

我知道证书包含公钥和一些额外的信息(我希望),但是它保存在apk文件中吗?它是文件还是文本还是什么?什么是签名呢? 在Android中我们可以轻松阅读以验证应用程序吗?

3 个答案:

答案 0 :(得分:2)

证书和密钥库

公钥证书(也称为数字证书或身份证书)包含公钥/私钥对的公钥,以及标识密钥所有者的一些其他元数据(例如,名称和地点)。证书的所有者持有相应的私钥。

签署APK时,签名工具会将公钥证书附加到APK。公钥证书用作"指纹"唯一地将APK与您和您相应的私钥相关联。这有助于Android确保您APK的任何未来更新都是真实的,并且来自原始作者。用于创建此证书的密钥称为应用程序签名密钥。

密钥库是包含一个或多个私钥的二进制文件。

每个应用必须在整个生命周期内使用相同的证书,以便用户能够安装新版本作为应用的更新。有关在整个生命周期内为所有应用程序使用相同证书的好处的更多信息,请参阅下面的签名注意事项。

签署调试版

从IDE运行或调试项目时,Android Studio会自动使用Android SDK工具生成的调试证书对您的APK进行签名。第一次在Android Studio中运行或调试项目时,IDE会自动在$ HOME / .android / debug.keystore中创建调试密钥库和证书,并设置密钥库和密钥密码。

由于调试证书是由构建工具创建的,并且设计不安全,因此大多数应用商店(包括Google Play商店)都不会接受使用调试证书签名的APK进行发布。

Android Studio会自动将您的调试签名信息存储在签名配置中,因此您不必在每次调试时都输入它。签名配置是一个对象,包含用于签署APK的所有必要信息,包括密钥库位置,密钥库密码,密钥名称和密钥密码。您无法直接编辑调试签名配置,但可以配置对发布版本进行签名的方式。

有关如何构建和运行应用程序以进行调试的更多信息,

答案 1 :(得分:1)

编译APK时,最后一步是签署APK。实际上它正在添加3个小文件。您可以将任何APK重命名为ZIP,将其解压缩,您会找到目录META-INF - 这是您的签名信息。

MANIFEST.MFCERT.SF非常相似,包含文件列表及其sha1 / sha256哈希值(一个用于文件,第二个用于第一个文件的条目),以及CERT.RSA带有您公钥的x509证书。

答案 2 :(得分:0)

据我所知(我对Android开发还很新),你用证书签名你的apk。如果我错了,有人会纠正我。

以下是一些其他信息: https://source.android.com/security/apksigning/v2 https://developer.android.com/studio/publish/app-signing.html

此外,如果您想通过Google Play商店发布,请务必告知您: The apk must be signed with the same certificates as the previous version